最近写了一个JSP发送邮件的程序,用<input type="file">标签选择发送文件的路径,程序在IE 6.0或者基于IE 6.0内核的浏览器中能正常发送附件,但是在IE9,firefox 4或者Chrome 13中都会出现找不到文件路径的情况,发生I/O异常,不知道怎么解决啊?搜索了N久,都没有知道到JSP的解决办法。
哪位高手遇到过这种情况,谁能帮帮我?
表单上传如果不加enctype= "multipart/form-data ",上传文件时使用默认编码application/x-www-form-urlencoded,不能用于文件上传,而添加后设置编码为MIME编码才能完整上传。还有就是天加了enctype= "multipart/form-data "不能使用request.getParameter("fileName")来获取表单元素。
从ie8后,火狐就不用说了,在中是不能取到文件的路径了,你只能得到文件和文件名。要文件路径你只能自己把它存放到工程目录下的相对路径下,再取出来。
1.用request.getParameter(String str)
后台用String fileName=request.getParameter("fileName")获取,试试
2.直接获取服务器上的内容
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List list = upload.parseRequest(request);
不知道对不对,希望对你有帮助
1.是以post方式提交的的吗
2.有无 :enctype= "multipart/form-data "
3.可以用隐藏iframe的方式
贴出异常信息
建议楼主朋友贴出所有代码
另: enctype= "multipart/form-data " 中最后有一空格, 我没试过有无影响。
不是很明白楼主的意思。
JSP是在服务端跑的,根本管不到客户端的东西。
如果你是希望文件服务端获取客户端上传的文件在客户端所存储的路径,那你可以这么做,用一个隐藏域记录文件的路径,通过javascript读取要上传文件的路径,这个是很容易做到的。