: :
*** web.xml *** <؟ 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 " <Sradlet-Name> fileUpload </servlet-name> <url-pattern>/fileupload </url-pattern> </revlet-mapping> </web-app>
package cn.com.action ؛ import java.io.file ؛ import java.io.*؛ import java.io.ioException ؛ import java.util.list ؛ import javax.servlet.servlexception ؛ import javax.servlet.http.httpservlet ؛ javax.servlet.http.httpservletresponse ؛ import org.apache.commons.fileupload.fileitem ؛ import org.apache.commons.fileupload.fileuploadexception ؛ import org.commons.fileud org.apache.commons.fileupload.servlet.servletfileupload ؛/** * * Author Administrator * 文件上传 * : * 1) 获得磁盘文件条目工厂 获得磁盘文件条目工厂 获得磁盘文件条目工厂 获得磁盘文件条目工厂 , * 3) 对 对)) 利用 利用 获取 真实路径 真实路径 , 和 和4) 高水平的 API 文件上传处理 servletfileupload تحميل = جديد servletfileupload (المصنع) ؛ * 目的是调用 parserequest (request) 方法 获得 fileItem 集合 list , * * * 5) 在 fileitem 对象中 , 遍历 , 判断 表单提交过来的信息 是否是 另做处理 另做处理 另做处理 * 6) * 第一种. 用第三方 提供的 item.write (ملف جديد (المسار ، اسم الملف)) ؛ 直接写到磁盘上 * 第二种. 手动处理 * */class public class fileUpload يمتد httpservlet {public void doget (طلب httpservletrequest ، httpservletresponse) يلقي servletexception ، ioException {request.setcharacterencoding ("UTF-8") ؛ // 设置编码 // 获得磁盘文件条目工厂 diskfileitemfactory factory = new DiskfileItemFactory () ؛ // 获取文件需要上传到的路径 string path = request.getRealPath ("/upload1") ؛ // string path = "c:/epload1" ؛ // 如果没以下两行设置的话 , 上传大的 文件 很多内存 , , // 设置暂时存放的 存储室 ، 这个存储室 , 可以和 可以和 的目录不同/** * 原理 它是先存到 暂时存储室 , 然后在真正写到 , , * 按理来说 当上传一个文件时 , 其实是上传了两份 其实是上传了两份 , 第一个是以 .tem 格式的 * 然后再将其真正写到 对应目录的硬盘上 然后再将其真正写到 , , 然后在真正写到 , * 按理来说 按理来说 , 其实是上传了两份 其实是上传了两份 , 第一个是以 第一个是以. // 设置 缓存的大小 , 当上传文件的容量超过该缓存时 直接放到 暂时存储室 factory.SetSizeThreshold (1024*1024) ؛ // 高水平的 API 文件上传处理 servletfileUpload تحميل = servletfileupload (المصنع) ؛ حاول {// 可以上传多个文件 list <IbourItem> list = (list <IbleItem>) epload.parserequest (request) ؛ لـ (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 是 去掉反斜杠 , اسم ملف السلسلة = value.substring (ابدأ+1) ؛ request.setAttribute (الاسم ، اسم الملف) ؛ // 真正写到磁盘上 // 它抛出的异常 用 استثناء 捕捉 //item.write (ملف جديد (المسار ، اسم الملف)) ؛ // 第三方提供的 // 手动写的 outputStream Out = new FileOutputStream (ملف جديد (مسار ، اسم الملف)) ؛ inputStream in = item.getInputStream () ؛ طول int = 0 ؛ Byte [] buf = new byte [1024] ؛ System.out.println ("获取上传文件的总 获取上传文件的总 : :"+item.getSize ()) ؛ // in.read (buf) 每次读到的数据存放在 buf 数组中 بينما ((طول = in.Read (buf))! = -1) {// 在 buf 数组中 取出数据 写到 输出流) 磁盘上 out.write (buf ، 0 ، length) ؛ } in.close () ؛ out.close () ؛ }}} catch (fileUploAdexception e) {e.printStackTrace () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } request.getRequestDispatcher ("filedemo.jsp"). إلى الأمام (طلب ، استجابة) ؛ } public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {doget (request ، response) ؛ }}*** index.jsp *** <٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <! "http://www.w3. enctype = "multipart/form-data" method = "post"> 用户名称: <input type = "text" name = "usename"> <br/> 上传图片: <input type = "file" name = "file1"> <br/>
*** filedemo.jsp *** <٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <!用户名称: $ {requestscope.usename} <br /> 图片名称: $ {requestscope.file1} <br /> 文件名称: $ {requestscope.file2} <br /> <!-把上传的图片显示出来-> <img src = "appload1 /<٪ = string) request.getattribute (" file1)总结
以上所述是小编给大家介绍的 Java 实现上传文件图片到指定服务器目录 , 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!