扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

java鎬庝箞瀹炵幇鏂囦欢鐨勪笂浼犲拰涓嬭浇

扬州沐宇科技
2023-11-06 21:49:42
Java

鍦↗ava涓紝鍙互浣跨敤Apache Commons FileUpload搴撴潵瀹炵幇鏂囦欢鐨勪笂浼狅紝浣跨敤Java鐨処O娴佹潵瀹炵幇鏂囦欢鐨勪笅杞姐€?/p>

鏂囦欢涓婁紶鐨勬楠ゅ涓嬶細

  1. 鍦℉TML琛ㄥ崟涓紝浣跨敤enctype="multipart/form-data"鏉ユ寚瀹氳〃鍗曟敮鎸佹枃浠朵笂浼犮€?/li>
  2. 鍦↗ava浠g爜涓紝鍒涘缓涓€涓猄ervlet鏉ユ帴鏀舵枃浠朵笂浼犺姹傘€?/li>
  3. 浣跨敤Apache Commons FileUpload搴撶殑ServletFileUpload绫绘潵瑙f瀽涓婁紶鐨勬枃浠舵暟鎹€?/li>
  4. 閬嶅巻瑙f瀽鍑虹殑鏂囦欢鍒楄〃锛屼娇鐢?code>FileItem瀵硅薄鐨?code>write鏂规硶灏嗘枃浠跺啓鍏ョ鐩樸€?/li>

浠ヤ笅鏄竴涓畝鍗曠殑鏂囦欢涓婁紶鐨勭ず渚嬩唬鐮侊細

import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.FileItem;

@WebServlet("/upload")
public class FileUploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 妫€鏌ヨ姹傛槸鍚︿负鏂囦欢涓婁紶
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (!isMultipart) {
            response.getWriter().println("涓嶆槸鏂囦欢涓婁紶璇锋眰");
            return;
        }

        // 鍒涘缓鏂囦欢涓婁紶宸ュ巶绫诲拰ServletFileUpload瀵硅薄
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);

        try {
            // 瑙f瀽涓婁紶鐨勬枃浠舵暟鎹?/span>
            List<FileItem> items = upload.parseRequest(request);
            for (FileItem item : items) {
                // 鍒ゆ柇鏄惁涓烘櫘閫氳〃鍗曞瓧娈?/span>
                if (item.isFormField()) {
                    String fieldName = item.getFieldName();
                    String fieldValue = item.getString();
                    // 澶勭悊鏅€氳〃鍗曞瓧娈垫暟鎹?/span>
                } else {
                    // 鏄枃浠跺瓧娈碉紝鑾峰彇鏂囦欢鍚嶅拰鍐呭
                    String fileName = item.getName();
                    InputStream fileContent = item.getInputStream();
                    // 灏嗘枃浠跺啓鍏ョ鐩樻垨澶勭悊鏂囦欢鍐呭
                }
            }
            response.getWriter().println("鏂囦欢涓婁紶鎴愬姛");
        } catch (Exception e) {
            response.getWriter().println("鏂囦欢涓婁紶澶辫触: " + e.getMessage());
        }
    }
}

鏂囦欢涓嬭浇鐨勬楠ゅ涓嬶細

  1. 鍒涘缓涓€涓猄ervlet鏉ュ鐞嗘枃浠朵笅杞借姹傘€?/li>
  2. 鍦⊿ervlet涓紝閫氳繃ServletContext瀵硅薄鑾峰彇瑕佷笅杞界殑鏂囦欢璺緞銆?/li>
  3. 浣跨敤Java鐨処O娴佽鍙栨枃浠跺唴瀹癸紝骞跺皢鏂囦欢鍐呭鍐欏叆鍝嶅簲鐨勮緭鍑烘祦銆?/li>

浠ヤ笅鏄竴涓畝鍗曠殑鏂囦欢涓嬭浇鐨勭ず渚嬩唬鐮侊細

@WebServlet("/download")
public class FileDownloadServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 鑾峰彇瑕佷笅杞界殑鏂囦欢璺緞
        String filePath = getServletContext().getRealPath("/path/to/file");

        // 璁剧疆鍝嶅簲鐨凜ontent-Type鍜孋ontent-Disposition澶?/span>
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

        // 璇诲彇鏂囦欢鍐呭骞跺皢鍐呭鍐欏叆鍝嶅簲鐨勮緭鍑烘祦
        InputStream fileContent = new FileInputStream(filePath);
        OutputStream responseOutput = response.getOutputStream();
        byte[] buffer = new byte[4096];
        int bytesRead = -1;
        while ((bytesRead = fileContent.read(buffer)) != -1) {
            responseOutput.write(buffer, 0, bytesRead);
        }
        fileContent.close();
        responseOutput.close();
    }
}

璇锋敞鎰忎慨鏀逛唬鐮佷腑鐨勬枃浠惰矾寰勫拰鏂囦欢鍚嶏紝浠ラ€傚簲浣犵殑瀹為檯鎯呭喌銆?/p>

扫码添加客服微信