国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

servlet上傳下載

xuweijian / 2459人閱讀

摘要:一添加項(xiàng)目依賴二上傳上傳文件存儲(chǔ)目錄上傳配置上傳文件最大值檢測(cè)是否為多媒體上傳如果不是則停止表單必須包含配置上傳參數(shù)設(shè)置最大文件上傳值中文處理構(gòu)造臨時(shí)路徑來(lái)存儲(chǔ)上傳的文件這個(gè)路徑相對(duì)當(dāng)前應(yīng)用的目錄如果目錄不存在則創(chuàng)建解析請(qǐng)求的內(nèi)容

一、添加項(xiàng)目依賴(gradle)
dependencies {
    compile group: "javax.servlet", name: "javax.servlet-api", version: "3.1.0"
    compile group: "commons-fileupload", name: "commons-fileupload", version: "1.3.3"
    compile group: "javax.servlet", name: "jstl", version: "1.2"
}
二、上傳servlet
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;

public class UploadServlet extends HttpServlet {
    // 上傳文件存儲(chǔ)目錄
    private static final String UPLOAD_DIRECTORY = "upload";

    // 上傳配置 上傳文件最大值
    private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 檢測(cè)是否為多媒體上傳
        if (!ServletFileUpload.isMultipartContent(request)) {
            // 如果不是則停止
            PrintWriter writer = response.getWriter();
            writer.println("Error: 表單必須包含 enctype=multipart/form-data");
            writer.flush();
            return;
        }

        // 配置上傳參數(shù)
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        // 設(shè)置最大文件上傳值
        upload.setFileSizeMax(MAX_FILE_SIZE);
        // 中文處理
        upload.setHeaderEncoding("UTF-8");
        // 構(gòu)造臨時(shí)路徑來(lái)存儲(chǔ)上傳的文件
        // 這個(gè)路徑相對(duì)當(dāng)前應(yīng)用的目錄
        String uploadPath = request.getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY;

        // 如果目錄不存在則創(chuàng)建
        File uploadDir = new File(uploadPath);
        if (!uploadDir.exists()) {
            uploadDir.mkdir();
        }

        List> data = new ArrayList<>();

        try {
            // 解析請(qǐng)求的內(nèi)容提取文件數(shù)據(jù)
            List formItems = upload.parseRequest(request);
            if (formItems != null && formItems.size() > 0) {
                // 迭代表單數(shù)據(jù)
                for (FileItem item : formItems) {
                    // 處理不在表單中的字段
                    if (!item.isFormField()) {
                        String fileName = item.getName();
                        String filePath = uploadPath + File.separator + UUID.randomUUID() + fileName;
                        File storeFile = new File(filePath);
                        // 在控制臺(tái)輸出文件的上傳路徑
                        System.out.println(filePath);
                        // 保存文件到硬盤
                        item.write(storeFile);
                        data.add(new HashMap() {{
                            put("name", fileName);
                            put("path", filePath);
                        }});
                    }
                }
            }
            request.getSession().setAttribute("list", data);
            request.setAttribute("message", "文件上傳成功!");
        } catch (Exception ex) {
            request.setAttribute("message", "錯(cuò)誤信息: " + ex.getMessage());
        }
        // 跳轉(zhuǎn)到 message.jsp
        request.getServletContext().getRequestDispatcher("/message.jsp").forward(request, response);
    }
}
三、下載servlet
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

public class DownloadServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String path = request.getParameter("path");
        //處理請(qǐng)求
        //讀取要下載的文件
        File f = new File(path);
        if (f.exists()) {
            FileInputStream fis = new FileInputStream(f);
            String filename = URLEncoder.encode(f.getName(), "utf-8"); //解決中文文件名下載后亂碼的問題
            byte[] b = new byte[fis.available()];
            fis.read(b);
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + filename + "");
            //獲取響應(yīng)報(bào)文輸出流對(duì)象
            ServletOutputStream out = response.getOutputStream();
            //輸出
            out.write(b);
            out.flush();
            out.close();
        }

    }
}
四、配置web.xml

    
        uploadServlet
        stu.servlet.UploadServlet
    
    
        downloadServlet
        stu.servlet.DownloadServlet
    
    
        uploadServlet
        /uploadServlet
    
    
        downloadServlet
        /downloadServlet
    
五、上傳的jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    $Title$


文件上傳

選擇一個(gè)文件:

六、下載的jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    Title


${message}

文件列表

文件 下載
${item.name} 下載

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/71444.html

相關(guān)文章

  • 7.2、使用基于 Servlet 3.0 的文件上傳

    摘要:本文示例見這個(gè)項(xiàng)目的分支下的項(xiàng)目這個(gè)項(xiàng)目是為本文單獨(dú)建立的。的內(nèi)置支持用于處理應(yīng)用程序中的文件上傳。提供了一個(gè)的實(shí)現(xiàn),使用了的和一些其他的東西,用于對(duì)的請(qǐng)求的解析。首先,創(chuàng)建一個(gè)帶有的表單,這樣用戶就可以通過這個(gè)表單上傳文件了。 ??本文示例見這個(gè)項(xiàng)目的 upload 分支下的項(xiàng)目(這個(gè)項(xiàng)目是為本文單獨(dú)建立的)。 ??WARNING:本文中有一部分直接把英文原文搬過來(lái)了,我的翻譯能力實(shí)...

    KevinYan 評(píng)論0 收藏0
  • 使用Servlet技術(shù)上傳文件

    摘要:技術(shù)現(xiàn)在提供開箱即用的上傳文件方法,所以任何實(shí)現(xiàn)規(guī)范的容器都能通過對(duì)象解析請(qǐng)求和生成有效的附件。用來(lái)在處理時(shí)存儲(chǔ)臨時(shí)文件或者是文件大小超過設(shè)置的值。默認(rèn)是允許上傳的最大文件大小,單位是。如果上傳的文件超過限制,容器將拋出異常。 支持文件上傳是web程序最基本和常見的需求。在早期的servlet規(guī)范中,實(shí)現(xiàn)文件上傳需要使用第三方庫(kù)或者復(fù)雜的輸入處理。針對(duì)此問題,servlet現(xiàn)在以通用和...

    asce1885 評(píng)論0 收藏0
  • Spring之旅第十站:MVC配置、上傳文件、異常處理、跨重定向請(qǐng)求、為控制器添加通知

    摘要:依賴于對(duì)請(qǐng)求的支持。使用解析兼容的沒有構(gòu)造器參數(shù),也沒有要設(shè)置的參數(shù),這樣,在應(yīng)用上下文中,將其聲明為就會(huì)非常簡(jiǎn)單。默認(rèn)是沒有限制的整個(gè)請(qǐng)求的容量。 Spring MVC 高級(jí)的技術(shù) 本章內(nèi)容: Spring MVC配置的替代方案 處理文件上傳 在控制器中處理異常 使用flash屬性 稍等還沒結(jié)束 說(shuō)明 如果你有幸能看到。后面的章節(jié)暫時(shí)不更新了,改變學(xué)習(xí)方式了。重要理解思想,這本書...

    leanote 評(píng)論0 收藏0
  • JavaWEB開發(fā)11——JSP

    摘要:出現(xiàn)的目的同一樣也是要提到頁(yè)面中的腳本代碼。標(biāo)準(zhǔn)標(biāo)準(zhǔn)標(biāo)簽庫(kù)有個(gè)子庫(kù),但隨著發(fā)展,目前常使用的是他的核心庫(kù)標(biāo)簽庫(kù)標(biāo)簽庫(kù)的前綴下載與導(dǎo)入下載從的網(wǎng)站下載的包。 一、JSP技術(shù)1.jsp腳本和注釋jsp腳本:1) ----- 內(nèi)部的java代碼翻譯到service方法的內(nèi)部2) ----- 會(huì)被翻譯成service方法內(nèi)部out.print()3) ---- 會(huì)被翻譯成servlet的成員的...

    beita 評(píng)論0 收藏0
  • Servlet 3.1 Async IO分析

    摘要:于是提供了機(jī)制,使得從中讀往里寫變成異步動(dòng)作。這是因?yàn)榭蛻舳说臄?shù)據(jù)推送速度太慢了,容器先將收回,當(dāng)容器發(fā)現(xiàn)可以讀取到新數(shù)據(jù)的時(shí)候,再分配一個(gè)去讀,如此循環(huán)直到全部讀完為止。注意和不能同時(shí)使用。 Github地址 相關(guān)系列文章: Servlet 3.0 異步處理詳解 Spring MVC異步處理的幾種方式 Servlet Async Processing提供了一種異步請(qǐng)求處理的手段(...

    n7then 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

xuweijian

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<