JSP如何取得<input type="file"> 文件路径

JSP如何取得<input type="file"> 文件路径,第1张

问题补充:我使用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上传的文件的文件名、文件上传时 怎么获取一般参数值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9476433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存