具体代码如下所示 :
*** web.xml *** <? xml versión = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xmlns = "http://java.sun.com/xml/ns/javaeeeeee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "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> <ervlet-name> fileupload </servlet-name> <ervlet-class> cn.com.action.fileUpload </servlet-class> </servlet-mappe <Servlet-name> fileUpload </servlet-name> <url-pattern>/fileUpload </url-Pattern> </servlet-mapping> </seb-app>
paquete cn.com.action; import java.io.file; import java.io.*; import java.io.ioexception; import java.util.list; import javax.servlet.servletexception; import javax.servlet.http.htttttttpServlet; import javax.servlet.http.httpservletRequest; importar; javax.servlet.http.httpServletResponse; import org.apache.commons.fileupload.fileitem; import org.apache.commons.fileupload.fileuploadException; import org.apache.comCom org.apache.commons.fileupload.servlet.ServletFileUpload;/** * * @author Administrator * 文件上传 * 具体步骤: * 1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包 * 2) 利用 request 获取 真实路径 ,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同 * 3)对 DiskFileItemFactory 对象设置一些 属性 * 4)高水平的API文件上传处理ServletFileUpload upload = new ServLetFileUpload (fábrica); * 目的是调用 Parserequest (Solicitud )方法 获得 FileItem 集合 List , * * 5 )在 FileItem 对象中 获取信息 , 遍历 , 判断 表单提交过来的信息 是否是 普通文本信息 另做处理 * 6) * 第一种. 用第三方 提供的 item.write (nuevo archivo (ruta, nombre de archivo)); 直接写到磁盘上 * 第二种. 手动处理 * */public class FileUpload extiende httpservlet {public void doget (httpservletRequest solicitud, httpServletResponse respuesta) lanza ServletException, ioException {request.setcharacterEcterEncoding ("UTF-8"); // 设置编码 // 获得磁盘文件条目工厂 DiskFileItemFactory Factory = new DiskFileItemFactory (); // 获取文件需要上传到的路径 string ruta = request.getRealPath ("/upload1"); // string path = "c:/upload1"; // 如果没以下两行设置的话 , 上传大的 文件 会占用 很多内存 , , // 设置暂时存放的 存储室, 这个存储室 , 可以和 最终存储文件 的目录不同/** * 原理 暂时存储室 暂时存储室 , 然后在真正写到 对应目录的硬盘上 , , * 按理来说 , 其实是上传了两份 , 第一个是以 .tem 格式的 * 然后再将其真正写到 对应目录的硬盘上 对应目录的硬盘上 */factory.setRepository (nuevo archivo (ruta)); // 设置 缓存的大小 , 当上传文件的容量超过该缓存时 , 直接放到 暂时存储室 Factory.setsizethreshold (1024*1024); // 高水平的 API 文件上传处理 SERVELTFILEUPLOAD SUBLAD = new ServLetFileUpload (fábrica); Pruebe {// 可以上传多个文件 List <FileItem> list = (list <StilEitem>) upload.parserequest (request); for (elemento fileitem: list) {// 获取表单的属性名字 name de cadena = item.getFieldName (); // 如果获取的 表单信息是普通的 文本 信息 信息 if (item.isformfield ()) {// 获取用户具体输入的字符串 , 名字起得挺好 , 因为表单提交过来的是 因为表单提交过来的是 字符串类型的 字符串类型的 string value = item.getString (); request.setAttribute (nombre, valor); } else {// 对传入的非 简单的字符串进行处理 , 比如说二进制的 图片 , 电影这些/** * 以下三步 , 主要获取 上传文件的名字 */// 获取路径名 String value = item.getName (); // 索引到最后一个反斜杠 int inicio = value.lastIndexof ("//"); // 截取 上传文件的 字符串名字 , 加 1 是 去掉反斜杠 , string filename = value.substring (inicio+1); request.setAttribute (nombre, nombre de archivo); // 真正写到磁盘上 // 它抛出的异常 用 用 Excepción 捕捉 //item.write (nuevo archivo (ruta, nombre de archivo)); // 第三方提供的 // 手动写的 outputStream out = new FileOutputStream (nuevo archivo (ruta, nombre de archivo)); InputStream in = item.getInputStream (); int longitud = 0; byte [] buf = nuevo byte [1024]; System.out.println ("获取上传文件的总ote 的容量 :"+item.getSize ()); // in.read (buf) 每次读到的数据存放在 buf 数组中 while ((longitud = in.read (buf))! = -1) {// 在 buf 数组中 取出数据 写到 (输出流)磁盘上 out.write (buf, 0, longitud); } in.close (); out.close (); }}} Catch (FileUploadException e) {E.PrintStackTrace (); } catch (Exception e) {E.PrintStackTrace (); } request.getRequestDIsPatcher ("FileDemo.jsp"). Avance (solicitud, respuesta); } public void dopost (httpservletRequest solicitud, respuesta httpservletreSponse) lanza ServletException, ioexception {doget (solicitud, respuesta); }}*** index.jsp *** <%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" "http://www.w3.org/tr/html4/loose.dtd"> podet enctype = "multipart/form-data" método = "post"> 用户名称: <input type = "text" name = "usame"> <br/> 上传图片: <input type = "file" nombre "name =" file1 "> <br/> 上传文件: <input type =" file "name =" file2 "> <br/> <input type =" someter "valor =" 提交 "/> </form> <bermoder
*** Filedemo.jsp *** <%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <! DocType html public "-// w3c // dtd html 4.01 transitional // en"> <html> <fead> <title> 上传文件图片案列 </title> </head> </head> <boder>用户名称: $ {requestscope.Usename} <Br /> 图片名称: $ {requestscope.file1} <Br /> 文件名称: $ {requestscope.file2} <br /> <!-把上传的图片显示出来-> <img src = "upload1 /<%= (string) request.getTrute (" file1 ")%>" /> </body> < /html>总结
以上所述是小编给大家介绍的 java 实现上传文件图片到指定服务器目录 , 希望对大家有所帮助 如果大家有任何疑问请给我留言 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持! 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!