用Struts2做文件上传时,前台js怎样获得文件对象,文件名,文件内容类型?(不用Bean的get,set方法)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Struts2做文件上传时,前台js怎样获得文件对象,文件名,文件内容类型?(不用Bean的get,set方法)。相关的知识,希望对你有一定的参考价值。

正常做上传时,我点击提交,后台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吧?希望牛人解答在线等。。。

出于对用户的安全性考虑,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写到服务器硬盘里,就实现上传了

参考技术A 你返回文件对象之后,file有个方法是getFileName()用来取得文件的名字。 参考技术B jquery上传插件。

前端上传文件实时显示进度条和上传速度的工作原理是怎样的?

参考技术A

后端的责任。

前端上传文件实时显示进度条和上传速度的工作原理就是后端的责任,在Django中实现需要重载上传文件的函数,在上传时文件是被分成数个MB的chunk处理的,每次都会调用这个上传函数。也就是说,每处理一个chunk就更新uploadedsize,然后浏览器端通过AJAX获取这个值和文件大小
最后用JavaScript渲染到页面上。

前端只能说会用框架和插件干活。前段时间用的百度的webuploader,demo就带进度条的。js代码不多可以看一下,猜测是监听事件。上传是前端和通信协议做的事,后端是写入。在比较传统流和和spring自带的transferto的耗时统称上传时间是不对的,应为写入时间。

项目框架采用spring+hibernate+springMVC如果上传文件不想使用flash那么你可以采用html5;截图前段模块是bootstarp框架;不废话直接来代码;spring-mvc配置文件。

nginx话lua可以拿到链接的套接口,读取套接口就可以知道当前上传了多少了。可以看下openresty的lualib/resty/upload.lua。

以上是关于用Struts2做文件上传时,前台js怎样获得文件对象,文件名,文件内容类型?(不用Bean的get,set方法)。的主要内容,如果未能解决你的问题,请参考以下文章

nodejs怎样获取一个上传文件的MD5码?

Struts2 使用Jquery+ajax 文件上传

Struts2 怎么获得前台传来json中的 map。

Struts2学习利用ajax异步上传

前端上传文件实时显示进度条和上传速度的工作原理是怎样的?

java上传文件时怎样设置如果文件的名称中含有中文就不让上传怎么做啊?