具体代码如下所示 :
*** web.xml *** <? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xns" 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> <servlet-name> fileupload </servlet-name> <servlet-class> cn.com.action.fileupload </servlet-class> </servlet> </servlet> </servlet> </servlet> </servlet> </servlet> </Servlet> </Servlet> </Servlet> </Servlet> </Servlet> </Servlet> </Servlet> </Servlet-mapaping> </servlet-mapaping> </servlet-mapping> <servlet-name> fileupload </servlet-name> <url-pattern>/fileupload </url-pattern> </servlet-mapping> </web-app>
пакет cn.com.action; импорт java.io.file; импорт java.io.*; импорт java.io.ioexception; импорт java.util.list; import javax.servlet.servletexception; импорт javax.servlet.http.httpservlet; import javax.servlet.http.httperservelt; import javax.servlet.http.http.httpservlet; Import javax.servlet.htt javax.servlet.http.httpservletresponse; import org.apache.commons.fileupload.fileitem; import org.apache.commons.fileupload.fileuploadexcept org.apache.commons.fileupload.servlet.servletfileupload;/** * * @author Administrator * 文件上传 * 具体步骤 : * 1) 获得磁盘文件条目工厂 获得磁盘文件条目工厂 获得磁盘文件条目工厂 最终文件存储 最终文件存储 这两个存储位置可不同 也可相同 * 3))))) 对 * 3 4) 高水平的 API 文件上传处理 ServletFileUpload upload = new ServletFileUpload (Factory); * 目的是调用 parserequest (запрос) 方法 获得 fileItem 集合 List , * * 5) 在 FileItem 对象中 获取信息 遍历 遍历 , 判断 表单提交过来的信息 是否是 普通文本信息 另做处理 * 6) * 第一种. 用第三方 提供的 item.write (новый файл (path, filename)); 直接写到磁盘上 * 第二种. 手动处理 * */public Class FileUpload Extends httpservlet {public void doget (httpservletrequest-запрос, httpservletresponse response) throws servletexception, ioexception {request.setcharacterencoding ("utf-8"); // 设置编码 // 获得磁盘文件条目工厂 DiskFileItemfactory Factory = new DiskFileItemFactory (); // 获取文件需要上传到的路径 String path = request.getRealPath ("/upload1"); // String path = "c:/upload1"; // 如果没以下两行设置的话 , 上传大的 会占用 很多内存 , // 设置暂时存放的 存储室, 这个存储室 , 最终存储文件 的目录不同/** * 原理 它是先存到 暂时存储室 , 然后在真正写到 对应目录的硬盘上 , * 按理来说 当上传一个文件时 , 其实是上传了两份 第一个是以 .tem 格式的 * 然后再将其真正写到 对应目录的硬盘上 */factory.setrepository (новый файл (путь)); // 设置 缓存的大小 , 当上传文件的容量超过该缓存时 直接放到 暂时存储室 暂时存储室 factory.setsizeThroshold (1024*1024); // 高水平的 API 文件上传处理 ServletFileUpload upload = new ServletFileUpload (Factory); try {// 可以上传多个文件 List <fieTiTem> list = (list <FieleItem>) upload.parserequest (request); for (fileitem item: list) {// 获取表单的属性名字 string name = item.getfieldname (); // 如果获取的 表单信息是普通的 文本 信息 if (item.isformfield ()) {// 获取用户具体输入的字符串 , 名字起得挺好 因为表单提交过来的是 字符串类型的 字符串类型的 string value = item.getString (); request.setattribute (имя, значение); } else {// 对传入的非 简单的字符串进行处理 , 比如说二进制的 图片 , 电影这些/** * 以下三步 , 主要获取 上传文件的名字 */// 获取路径名 string value = item.getName (); // 索引到最后一个反斜杠 int start = value.lastIndexof ("//"); // 截取 上传文件的 字符串名字 , 1 是 去掉反斜杠 , string filename = value.substring (start+1); request.setattribute (имя, имя файла); // 真正写到磁盘上 // 它抛出的异常 用 Исключение 捕捉 //item.write (новый файл (path, filename)); // 第三方提供的 // 手动写的 outputstream out = new FileOutputStream (новый файл (Path, Filename)); InputStream in = item.getInputStream (); int length = 0; byte [] buf = new Byte [1024]; System.out.println ("获取上传文件的总获取上传文件的总 的容量 :"+item.getSize ()); // in.read (buf) 每次读到的数据存放在 buf 数组中 while while ((length = in.read (buf))! = -1) {// 在 buf 数组中 取出数据 写到 ((输出流 输出流 磁盘上 out.write (buf, 0, длина); } in.close (); out.close (); }}} catch (fileuploadexception e) {e.printstacktrace (); } catch (Exception e) {e.printstackTrace (); } request.getRequestDispatcher ("faledemo.jsp"). } public void Dopost (httpservletRequest, httpservletresponse response) Throws ServletException, ioException {Doget (запрос, ответ); }}*** index.jsp *** <%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 Transitional // en" «http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <Title> 上传入口 tit 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>
*** falledemo.jsp *** <%@ page language = "java" import = "java.util.*" pageencoding = "UTF-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <teat> </title> </title> </tite> </tite> </tite> </tite> </tite> </wate> </wate> </wate> </tite> </tite> </tite> </tite> </tite> </html> </html >01 </html 4.01 </html 4.01.用户名称: $ {requestScope.usEname} <br /> 图片名称: $ {requestScope.file1} <br /> 文件名称: $ {requestScope.file2} <br /> <!-把上传的图片显示出来-> <img src = "opload1 /<%= (строка) request.getattribut总结
以上所述是小编给大家介绍的 java 实现上传文件图片到指定服务器目录 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!