用Struts2做文件上传时,前台js怎样获得文件对象,文件名,文件内容类型?(不用Bean的get,set方法)。
正常做上传时,我点击提交,后台set方法里就有值了,但现在我想用button按钮,提交时用json把值传给后台,所以想通过js获得这三个值,原来的jsp页面是<s:for...
正常做上传时,我点击提交,后台set方法里就有值了,但现在我想用button按钮,提交时用json把值传给后台,所以想通过js获得这三个值,原来的jsp页面是
<s:form action="fileSave" enctype="multipart/form-data" theme="simple" method="post">
请选择数据文件:<s:file name="file" />
<s:submit value="提交" />
</s:form>
如何用js获得文件对象file,文件名fileName,文件内容类型fileContentType
不会是getElementById吧?希望牛人解答在线等。。。 展开
<s:form action="fileSave" enctype="multipart/form-data" theme="simple" method="post">
请选择数据文件:<s:file name="file" />
<s:submit value="提交" />
</s:form>
如何用js获得文件对象file,文件名fileName,文件内容类型fileContentType
不会是getElementById吧?希望牛人解答在线等。。。 展开
3个回答
展开全部
出于对用户的安全性考虑,js是无法访问上传文件的完整路径,也就是无法获得file对象,也不能获得文件内容类型fileContentType,但是可以获得文件名(传值或者getElementById,然后对该值进行切割得到文件名和后缀名),故可以获取后缀名,但与文件内容类型fileContentType可能不一致,所以要进行文件的类型,大小等判断,还需要传到后台进行。不过要是图片的话,js是有一个比较bt的做法可以获得大小(类型暂且用后缀名来进行判断,前面也说了获取文件名的方法)的,根据路径new一个Image对象,如var image = new Image(); image.src = url;(url就是文件上传的路径),image.fileSize就是图片的大小
追问
我要传一个Excel到服务器。代码如下 File fileSavePath=new File("c:/upload"); String fileSaveName="c:/upload/"+this.fileFileName;(此处是将重名文件重新取名方法) File savefile=new File(fileSaveName); this.file.renameTo(savefile); this.FileName可以用JS得到,关键是this.file这步需要获得file对象,没这步怎么在服务器上生成这个Excel呢
追答
Struts2中,已经帮你把file对象传到action中了,在Action中定义一个全局变量,private File image;(注意,image名称必须与form表达的input中file的name相同)实现get和set方法,就获得该对象啊,然后通过inputstream写进来,通过outputstream写到服务器硬盘里,就实现上传了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询