问题补充:我使用strFile = requestgetParameter("file")只能取得文件名,会发生I/O异常,提示找不到文件路径; <br />用new File(strFile)getAbsolutePath()得到了路径,但是得到的路径形式为:%Tomcat_dir%\bin\XX,XX为文件名 问题补充:<div class="quote_title">lyyf 写道</div><div class="quote_div">1用requestgetParameter(String str) <br /><input type="file" name="fileName" <br />后台用String fileName=requestgetParameter("fileName")获取,试试 <br />2直接获取服务器上的内容 <br /> FileItemFactory factory = new DiskFileItemFactory(); <br /> ServletFileUpload upload = new ServletFileUpload(factory); <br /> List<FileItem list = uploadparseRequest(request); <br />不知道对不对,希望对你有帮助 <br /> <br /> <br /> <br /></div> <br />String fileName=requestgetParameter("fileName")这个我试过了只能得到文件名,浏览器我用IE9、firefox 4试过都不行;我仅仅是想获得<input type="file" name="fileName"的路径 问题补充:<div class="quote_title">maxm 写道</div><div class="quote_div">1是以post方式提交的的吗 <br />2有无 :enctype= "multipart/form-data " <br />3可以用隐藏iframe的方式</div> <br /> <br /> <br />是post提交,如果有enctype= "multipart/form-data "的话,程序就出错,运行起来没反应,我在IE6试了下,可以取得路径(不过此时我的程序能正常运行,但是有乱码出现) 问题补充:<div class="quote_title">maxm 写道</div><div class="quote_div">贴出异常信息</div> <br /> <br />Path is:F:\apache-tomcat-6029\bin\logtxt(这是我使用new File(strFile)getAbsolutePath();取得的路径) <br />javaxmailMessagingException: IOException while sending message; <br /> nested exception is: <br /> javaioFileNotFoundException: F:\apache-tomcat-6029\bin\logtxt (系统找不到指定的文件。) <br /> at comsunmailsmtpSMTPTransportsendMessage(SMTPTransportjava:930) <br /> at serviceMailstartSend(Mailjava:460) <br /> at orgapachejspsend_jsp_jspService(send_jspjava:178) <br /> at orgapachejasperruntime>
[align=right][align=left]DiskFileItemFactory factory=new DiskFileItemFactory();
String path=requestgetRealPath("/upload");
Systemoutprintln(path);
factorysetRepository(new File(path));
factorysetSizeThreshold(10241024);
ServletFileUpload upload=new ServletFileUpload(factory);
try{
List<FileItem> ls=uploadparseRequest(request);
for (FileItem item : ls) {
if(itemisFormField()){
String name=itemgetFieldName();
String value=itemgetString("gbk");
requestsetAttribute(name, value);
}else{
String name=itemgetFieldName();
String value=itemgetName();
int start=valuelastIndexOf("\\");
String fileName=valuesubstring(start+1);
Systemoutprintln(fileName);
requestsetAttribute(name, fileName);
Encoding en=new Encoding();
//itemwrite(new File(path,fileName));
OutputStream os=new FileOutputStream(new File(path,fileName));
InputStream is=itemgetInputStream();
byte [] bt=new byte[400];
int length=0;
while((length=isread(bt))>0){
oswrite(bt, 0, length);
}
osclose();
isclose();
}
}
}catch (Exception e) {
eprintStackTrace();
}[/align][/align]
在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为commons-fileupload依赖于commons-io这个包,所以需要下载这两个包commons-fileupload-121jar和commons-io-132jar。
1、搭建环境
创建Web项目,将包导入到项目lib下
2、实现文件上传
(第一种上传的方法)
新建uploadjsp页面
12345678910111213141516<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ";新建处理文件上传的Servlet
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667package comload; import javaioFile;import javaioIOException;import javautilList;import javaxservletServletContext;import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet); }}(第二种上传的方法)
新建Jsp页面(同上,只是路径改变下)
12345678910111213141516<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ";建立Servlet处理上传
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package comload; import javaioFile;import javaioFileOutputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream;import javaxservletServletException;import javaxservletannotationMultipartConfig;import javaxservletannotationWebServlet;import javaxservlet); }}(第三种上传的方法)
这里使用的是jspSmartUpload包上传下载,笔者认为这种上传下载较为简单,但是好像不是很多人用,不懂。
创建HTML页面
123456789101112131415161718192021222324252627<!DOCTYPE html><html><head><meta ;创建Servlet处理上传文件
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182package comload; import javaioIOException;import javaioPrintWriter; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet); } }注意:代码 int count = susave("/share");表示你需要先建个文件夹,所以你可以先在Webcontent建立一个,然后将项目取消部署,再重新部署进去之后就会在运行那边建立起一个文件夹了!
或者你可以直接找到运行的路径,然后建立share文件夹。
3、实现文件下载
(第一种文件下载)
注意:该代码是直接访问Servlet类的
123456789101112131415161718192021222324252627282930313233343536373839404142package comload; import javaioFileInputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet); } }(第二种下载方法)
新建jsp页面选择下载
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ";创建Servlet类进行下载(注意:该下载如果文件名是中文的话,一样会出现乱码现象)
package comload;
import javaioBufferedInputStream;import javaioFile;import javaioFileInputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream;import javanetURLEncoder; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet); }}(第三种下载的方法)
同上的jsp页面代码,这里就不再重复了。
新建Serlvet类,实现下载功能(注意:这里文件名就算是中文名,也不会出现乱码问题了!)
package comload;
import javaioBufferedInputStream;import javaioFile;import javaioFileInputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream;import javanetURLEncoder; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet>以上就是关于JSP如何取得<input type="file"> 文件路径全部的内容,包括:JSP如何取得<input type="file"> 文件路径、如何在servlet得到jsp上传的文件的文件名、文件上传时 怎么获取一般参数值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)