国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Java實現上傳文件圖片到指定服務器目錄

2024-07-14 08:41:15
字體:
來源:轉載
供稿:網友

具體代碼如下所示:

***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/xml/ns/javaee" 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-mapping> <servlet-name>fileUpload</servlet-name> <url-pattern>/fileUpload</url-pattern> </servlet-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.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;/** *  * @author Administrator * 文件上傳 * 具體步驟: * 1)獲得磁盤文件條目工廠 DiskFileItemFactory 要導包 * 2) 利用 request 獲取 真實路徑 ,供臨時文件存儲,和 最終文件存儲 ,這兩個存儲位置可不同,也可相同 * 3)對 DiskFileItemFactory 對象設置一些 屬性 * 4)高水平的API文件上傳處理 ServletFileUpload upload = new ServletFileUpload(factory); * 目的是調用 parseRequest(request)方法 獲得 FileItem 集合list , *  * 5)在 FileItem 對象中 獲取信息, 遍歷, 判斷 表單提交過來的信息 是否是 普通文本信息 另做處理 * 6) * 第一種. 用第三方 提供的 item.write( new File(path,filename) ); 直接寫到磁盤上 * 第二種. 手動處理  * */public class FileUpload extends HttpServlet { public void doGet(HttpServletRequest request, 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(new File(path)); //設置 緩存的大小,當上傳文件的容量超過該緩存時,直接放到 暫時存儲室 factory.setSizeThreshold(1024*1024) ; //高水平的API文件上傳處理 ServletFileUpload upload = new ServletFileUpload(factory); try {  //可以上傳多個文件  List<FileItem> list = (List<FileItem>)upload.parseRequest(request);  for(FileItem item : list){  //獲取表單的屬性名字  String name = item.getFieldName();  //如果獲取的 表單信息是普通的 文本 信息  if(item.isFormField()){   //獲取用戶具體輸入的字符串 ,名字起得挺好,因為表單提交過來的是 字符串類型的   String value = item.getString() ;   request.setAttribute(name, value);  }else{//對傳入的非 簡單的字符串進行處理 ,比如說二進制的 圖片,電影這些   /**   * 以下三步,主要獲取 上傳文件的名字   */   //獲取路徑名   String value = item.getName() ;   //索引到最后一個反斜杠   int start = value.lastIndexOf("//");   //截取 上傳文件的 字符串名字,加1是 去掉反斜杠,   String filename = value.substring(start+1);   request.setAttribute(name, filename);   //真正寫到磁盤上   //它拋出的異常 用exception 捕捉   //item.write( new File(path,filename) );//第三方提供的   //手動寫的   OutputStream out = new FileOutputStream(new File(path,filename));   InputStream in = item.getInputStream() ;   int length = 0 ;   byte [] buf = new byte[1024] ;   System.out.println("獲取上傳文件的總共的容量:"+item.getSize());   // in.read(buf) 每次讀到的數據存放在 buf 數組中   while( (length = in.read(buf) ) != -1){   //在 buf 數組中 取出數據 寫到 (輸出流)磁盤上   out.write(buf, 0, length);   }   in.close();   out.close();  }  } }catch (FileUploadException e) {  e.printStackTrace(); }catch (Exception e) {  e.printStackTrace(); } request.getRequestDispatcher("filedemo.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException { doGet(request, response); }}
***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>上傳入口</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>
***filedemo.jsp***<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>上傳文件圖片案列</title></head><body> 用戶名稱:${requestScope.usename }<br />  圖片名稱:${requestScope.file1 }<br />  文件名稱:${requestScope.file2 }<br /> <!-- 把上傳的圖片顯示出來 --> <img alt="go" src="upload1/<%=(String) request.getAttribute("file1")%> " /></body></html>

總結

以上所述是小編給大家介紹的Java實現上傳文件圖片到指定服務器目錄,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 逊克县| 榆树市| 柏乡县| 镇远县| 普安县| 临朐县| 自治县| 平江县| 重庆市| 景东| 苏尼特右旗| 宁德市| 新蔡县| 子长县| 金川县| 崇阳县| 许昌市| 龙海市| 肃南| 方城县| 图木舒克市| 台中市| 定南县| 波密县| 旺苍县| 怀来县| 大同县| 正蓝旗| 长春市| 广汉市| 天峨县| 巴马| 和硕县| 伽师县| 鱼台县| 宣化县| 方山县| 弋阳县| 广宁县| 雅江县| 法库县|