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

首頁 > 開發 > Java > 正文

java實現文件上傳下載

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

本文實例為大家分享了java實現文件上傳下載的具體代碼,供大家參考,具體內容如下

一.上傳

1.前端:

<form method="post" action="FileUpload" enctype="multipart/form-data">  <input type="file" name="uploadFile" />  <br/>  <input type="submit" value="上傳" /></form>

2.后臺:

import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;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.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import dao.FileDao;@WebServlet("/FileUpload")public class FileUpload extends HttpServlet {  private static final long serialVersionUID = 1L;     // 上傳配置  private static final int MEMORY_THRESHOLD  = 1024 * 1024 * 3; // 3MB  private static final int MAX_FILE_SIZE   = 1024 * 1024 * 40; // 40MB  private static final int MAX_REQUEST_SIZE  = 1024 * 1024 * 50; // 50MB    public FileUpload() {    super();  }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");    response.setCharacterEncoding("UTF-8");    response.setContentType("text/html;charset=UTF-8");    PrintWriter out = response.getWriter();          if (!ServletFileUpload.isMultipartContent(request)) {      // 如果不是則停止      out.println("Error: 表單必須包含 enctype=multipart/form-data");      out.flush();      return;    }        // 配置上傳參數    DiskFileItemFactory factory = new DiskFileItemFactory();    // 設置內存臨界值 - 超過后將產生臨時文件并存儲于臨時目錄中    factory.setSizeThreshold(MEMORY_THRESHOLD);    // 設置臨時存儲目錄    factory.setRepository(new File(System.getProperty("java.io.tmpdir")));     ServletFileUpload upload = new ServletFileUpload(factory);         // 設置最大文件上傳值    upload.setFileSizeMax(MAX_FILE_SIZE);         // 設置最大請求值 (包含文件和表單數據)    upload.setSizeMax(MAX_REQUEST_SIZE);        // 中文處理    upload.setHeaderEncoding("UTF-8");             String uploadPath = request.getServletContext().getRealPath("/files");    File uploadDir = new File(uploadPath);    if (!uploadDir.exists()) {      uploadDir.mkdir();    }        try {      // 解析請求的內容提取文件數據      List<FileItem> formItems = upload.parseRequest(request);      if (formItems != null && formItems.size() > 0) {        // 迭代表單數據        for (FileItem item : formItems) {          // 處理不在表單中的字段          if (!item.isFormField()) {            String fileName = new File(item.getName()).getName();            String filePath = uploadPath + File.separator + fileName;            File storeFile = new File(filePath);            // 在控制臺輸出文件的上傳路徑//            System.out.println(filePath);            // 保存文件到硬盤            if(storeFile.exists()) {              out.println("上傳失敗,文件已存在!");            }else {              item.write(storeFile);              out.println("文件上傳成功!");            }            }        }      }    } catch (Exception ex) {      response.getWriter().println("文件上傳成功!");    }  }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    doGet(request, response);  }} 

二.下載

1.下載鏈接:

FileDownload?filename="+URLEncoder.encode(filename,"utf-8") --------- 需要對URL中的中文參數進行編碼,否則會出現亂碼

2.后臺:

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/FileDownload")public class FileDownload extends HttpServlet {  private static final long serialVersionUID = 1L;      public FileDownload() {    super();  }  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");    response.setCharacterEncoding("UTF-8");    PrintWriter out = response.getWriter();        String dirPath = request.getServletContext().getRealPath("/files");    String filename = URLEncoder.encode(request.getParameter("filename"),"utf-8");  //需要對URL中的中文參數進行編碼,否則出現亂碼    response.getWriter().println(filename);    String filepath = dirPath + File.separator + filename;    response.setContentType("APPLICATION/OCTET-STREAM");    response.setHeader("Content-Disposition", "attachment; filename=/"" + filename + "/"");    FileInputStream fileInputStream = new FileInputStream(filepath);    int i = 0;    while ((i = fileInputStream.read()) != -1) {      out.write(i);    }    fileInputStream.close();    out.close();  }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    doGet(request, response);  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂伦春自治旗| 泊头市| 织金县| 漾濞| 康平县| 昌都县| 海安县| 中宁县| 聊城市| 清涧县| 嘉义市| 迁安市| 扎兰屯市| 德阳市| 朔州市| 绥阳县| 九寨沟县| 三原县| 广丰县| 阳信县| 沂南县| 富川| 自贡市| 南部县| 镇雄县| 盱眙县| 长乐市| 疏附县| 密云县| 额尔古纳市| 新晃| 锦屏县| 济阳县| 象山县| 友谊县| 漳浦县| 丁青县| 民县| 错那县| 芦溪县| 荔浦县|