具体代码如下所示 :
*** web.xml *** <xml Version = "1.0" coding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http:/java.sun..sun.Sun.Sun.Sun.Sun.Sun.Sun.Sun.Sun.Sun.. xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schenalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "Version =" 2.5 "> <servlet> <servlet-name> DateiElpload </servlet-name> <Servlet-Class> cn.com.fileUplet> </servlet-cn.com.fileUneupload </Servlet-Name> </servlet-cn.com.fileUpletung> </servlet> </servlet-mapting> </servlet> </servlet-maping <servlet-name> fileUpload </servlet-name> <URL-Pattern>/fileUpload </url-pattern> </servlet-mapping> </web-app>
Paket cn.com.action; import java.io.file; import Java.io. javax.servlet.http.httpServletResponse; import org.apache.commons.FileUpload.FileItem; import org.apache.commons.FileUpload.FileUploadexception; import org.apache org.apache.commons.fileupload.servlet.ServletFileUpload;/** * * @author Administrator * 文件上传 * 具体步骤: * 1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包 * 2) 利用 request 获取 真实路径 ,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同 * 3)对 DiskFileItemFactory 对象设置一些 属性 * 4)高水平的API文件上传处理ServletFileUpload upload = new ServletFileUpload (fabrik); * 目的是调用 Parsequest (Anfrage )方法 获得 获得 FileItem 集合 Liste , * * 5 )在 FileItem 对象中 获取信息 , 遍历 , 判断 表单提交过来的信息 是否是 普通文本信息 另做处理 * 6) * 第一种. 用第三方 提供的 item.write (neue Datei (Pfad, Dateiname)); 直接写到磁盘上 * 第二种. 手动处理 * */public class FileUpload erweitert HttpServlet (public void dagget (httpServletRequest-Anforderung, HttpServletResponse-Antwort) aus DienerletException, iOException {request.setcharactercoding ("utf-8"); // 设置编码 // 获得磁盘文件条目工厂 diskFileItemFactory factory = new diskFileItemfactory (); // 获取文件需要上传到的路径 String path = request.getRealPath ("/upload1"); // String path = "c:/upload1"; // 如果没以下两行设置的话 , 上传大的 文件 很多内存 很多内存 , // 设置暂时存放的 存储室 这个存储室 , 可以和 的目录不同 的目录不同/** * 原理 它是先存到 暂时存储室 , 然后在真正写到 , * 按理来说 当上传一个文件时 , 其实是上传了两份 第一个是以 第一个是以 .tem 格式的 * 然后再将其真正写到 对应目录的硬盘上 */factory.setRepository (neue Datei (Path)); // 设置 缓存的大小 , 当上传文件的容量超过该缓存时 , 直接放到 暂时存储室 factory.setizethreshold (1024*1024); // 高水平的 api 文件上传处理 servletFileUpload upload = new ServletFileUpload (factory); try {// 可以上传多个文件 list <FileItem> list = (list <DileItem>) upload.parsequest (request); für (FileItem -Element: Liste) {// 获取表单的属性名字 String name = item.getFieldname (); // 如果获取的 表单信息是普通的 文本 信息 if (item.isformfield ()) {// 获取用户具体输入的字符串 , 名字起得挺好 , 因为表单提交过来的是 字符串类型的 String value = item.getString (); Request.SetAttribute (Name, Wert); } else {// 对传入的非 简单的字符串进行处理 , 比如说二进制的 图片 , 电影这些 电影这些/** * 以下三步 主要获取 上传文件的名字 上传文件的名字 上传文件的名字 */// 获取路径名 string value = item.getName (); // 索引到最后一个反斜杠 int start = value.lastIndexof ("//"); // 截取 上传文件的 字符串名字 , 加 1 是 去掉反斜杠 , , String Dateiname = value.substring (Start+1); Request.SetAttribute (Name, Dateiname); // 真正写到磁盘上 // 它抛出的异常 用 AUCECT 捕捉 //item.write (neue Datei (Pfad, Dateiname)); // 第三方提供的 // 手动写的 outputStream out = new FileOutputStream (neue Datei (Pfad, Dateiname)); InputStream in = item.getInputStream (); int länge = 0; byte [] buf = neues byte [1024]; System.out.println ("获取上传文件的总 获取上传文件的总 的容量 : :"+item.getSize ()); // in.read (buf) 每次读到的数据存放在 buf 数组中 while ((länge = in.read (buf))! } in.close (); out.close (); }}} catch (FileUploadexception e) {e.printstacktrace (); } catch (Ausnahme e) {e.printstacktrace (); } request.getRequestDispatcher ("fileDeMo.jsp"). Forward (Request, Antwort); } public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, ioException {dodget (request, response); }}*** INDEX.JSP *** <%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! docType html public "-// w3c // dtd html 4.01 tranitional // en" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>上传入口</title></head><body> <form action="fileUpload" enctype="multipart/form-data" method="post" > 用户名称:<input type="text" name="usename"> <br/> 上传图片:<input type="file" name="file1"><br/> 上传文件:<input type="file" name="file2"><br/> <input type="submit" value="提交"/> </form> </body></html>
*** aagedemo.jsp *** <%@ page Language = "java" import = "java.util.用户名称: $ {requestScope.ussename} <br /> 图片名称: $ {requestScope.file1} <br /> 文件名称: $ {RequestScope.File2} <br /> <!-把上传的图片显示出来-> <img Src = "upload1 /<%= (String) Request.GetatTribute (" Datei1 ")%>")%>%> ") / /> < /body> < /htm.总结
以上所述是小编给大家介绍的 Java 实现上传文件图片到指定服务器目录 , 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持! 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持! 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!