1. 程式人生 > >servlet處理檔案上傳8

servlet處理檔案上傳8

要做到檔案上傳,客戶端程式設計有幾個要點
method的值使用post
enctype的值使用multipart/form-data
每一個控制元件都要有那麼屬性
例如

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

Servlet配置
1.在Servlet類上使用@MultipartConfig
MultipartConfig的屬性
1.fileSizeThershold int型 是(可選) 描述:當前資料量大於該值時,內容將被寫入檔案。
2.location String型 是(可選) 描述:存放生成檔案的地址
3.maxFileSize long型 是(可選) 描述:允許上傳的檔案最大值,預設為-1,表示沒有限制。
4.maxRequestSize long型 是(可選) 描述:針對 multipart/form-data 請求的最大數量,預設為-1,表示沒有限制。

@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {

2.在web.xml檔案的servlet標籤中使用multipart-config標籤

<servlet>
    <servlet-name>uploadservlet</servlet-name>
    <servlet-class>com.tanlan.javaees1.UploadServlet</servlet-class>
    <multipart-config
/>
</servlet> <servlet-mapping> <servlet-name>uploadservlet</servlet-name> <url-pattern>/upload</url-pattern> </servlet-mapping>

獲取檔案上傳中檔案本身的資訊
在Multipart請求中,每一個表單控制元件,都會被轉化成一個Part
怎麼獲取Part呢?
使用HttpServletRequest獲取Part
getPart:返回指定名稱的part
getParts:返回請求中所有的part

@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Part part = request.getPart("file1");
        System.out.println(part.getName());
        System.out.println(part.getSubmittedFileName());
        System.out.println(part.getSize());
        System.out.println(part.getContentType());
        Collection<String> heardersNames = part.getHeaderNames();
        for (String headerName : heardersNames) {
            System.out.println(headerName + ":" + part.getHeader(headerName));
        }
        String uploadDir=getServletContext().getRealPath("/upload");
        part.write(uploadDir+"\\"+part.getSubmittedFileName());

    }

}

Part介面的方法請參考相關的API文件
接下來有幾個比較重要的方法:
write:引數是絕對位置,若是相對位置,則相對location的值
delete刪除上傳的檔案
getInputStream:獲取輸入流
引數是絕對位置的時候

uploadDir=getServletContext().getRealPath("/upload");
part.write(uploadDir+"\\"+part.getSubmittedFileName());

相對位置的時候

@WebServlet("/upload2")
@MultipartConfig(maxRequestSize=1024*1024*15,maxFileSize=1024*1024*8,location="C:\\")
public class UploadServlet2 extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println(request.getParameter("name"));
        Collection<Part> parts=request.getParts();
        for (Part part : parts) {
            //檔案
            if(part.getContentType()!=null){
                String fileName=part.getSubmittedFileName();
                if(!fileName.equals("")){
                    part.write(fileName);
                }
            }


        }

    }

伺服器端程式設計要點:
檢查Part是普通表單控制元件還是文字上傳控制元件,判斷content-type的值是否是null
檢查檔名是否為null,為空則表示未選擇上傳檔案,判斷檔名是否是””
檔案存在則呼叫part的write方法,傳入一個絕對路徑或相對於location屬性指定的路徑

        System.out.println(request.getParameter("name"));
        Collection<Part> parts=request.getParts();
        for (Part part : parts) {
            //檔案
            if(part.getContentType()!=null){
                String fileName=part.getSubmittedFileName();
                if(!fileName.equals("")){
                    part.write(fileName);
                }
            }


        }

相關推薦

servlet處理檔案8

要做到檔案上傳,客戶端程式設計有幾個要點 method的值使用post enctype的值使用multipart/form-data 每一個控制元件都要有那麼屬性 例如 <for

php處理檔案

注意點: 1、<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">處理檔案上傳的時候,如果一個表單裡面有檔案域的時候,mothod

node.js服務端處理檔案的完整流程

在本文 微信小程式-從相簿獲取圖片 使用相機拍照 本地圖片上傳之前需要看看 微信小程式-獲取使用者session_key,openid,unionid - 後端為nodejs 程式碼封裝是在上文新增的。 本文知識點: 1、微信小程式選擇圖片wx.chooseImage()介

js+jstl+servlet實現檔案、列表展示及檔案下載

檔案上傳 1.upload.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert

servlet實現檔案

一、Servlet實現檔案上傳,需要新增第三方提供的jar包 下載地址: 1) commons-fileupload-1.2.2-bin.zip      :   點選開啟連結

SpringCloud使用Zuul處理檔案

背景 構建微服務的時候,一般所有的請求都會通過閘道器進行處理,在閘道器這層我們可以做很多事情,比如攔截,負載均衡,熔斷等等。 使用Zuul也可以進行檔案上傳處理,但是在文件中明確說明,Zuul在做檔

Servlet & JSP 檔案

1.介紹: 檔案上傳是將客戶端的一個或多個檔案傳輸到伺服器上儲存。 2.客戶端要求: 實現檔案上傳首先需要在客戶端的HTML頁面中通過一個表單開啟一個檔案,然後提交給伺服器。上傳檔案表單的<form>標籤中應該指定enctype屬性,它的值應該為"multi

Java Servlet實現檔案並讀取Zip壓縮包中檔案的真實型別

1.上傳檔案servlet PS: 使用ant.jar中的 org.apache.tools.zip.ZipEntry 物件,防止亂碼 package com.chenl.servlets; import java.io.File; import java.io.IOExcep

Servlet實現檔案詳解與實戰

    檔案上傳 1.客戶端程式設計 要上傳檔案,必須利用mutipart/form-data 設定HTML表單的enctype 屬性值 <form action="action"  enctype="mutipart/form-data"  method="po

Jsp+Servlet實現檔案下載——前臺頁面開發

       JSP和Servlet都是J2EE的規範,JSP全名為Java Server Pages,中文名叫java伺服器頁面,它是在傳統的網頁HTML檔案中插入Java程式段(Scriptlet

Servlet實現檔案的幾種方法

1. 通過getInputStream()取得上傳檔案。 /** * To change this template, choose Tools | Templates * and open the template in the editor. */ package

Servlet實現檔案的原理

Servlet 是用 Java 編寫的、協議和平臺都獨立的伺服器端元件,使用請求/響應的模式,提供了一個基於 Java 的伺服器解決方案。使用 Servlet 可以方便地處理在 HTML 頁面表單中提交的資料,但 Servlet 的 API 沒有提供對以 mutilpa

使用原生的Servlet封裝檔案和下載

package com.love.servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Outpu

java基於servlet檔案

研究了一天終於將java上傳檔案看懂了,當然懂的僅僅是皮毛,不妨記下來防止以後忘了。 我們在網上看關於檔案的上傳有很多的介紹,當然有的可以使用有的則不合適:我們首先來看前臺的介面 <!DOCTYPE html> <html lang="en"> &l

Servlet實現檔案,可多檔案

一、Servlet實現檔案上傳,需要新增第三方提供的jar包 下載地址: 接著把這兩個jar包放到 lib資料夾下: 二: 檔案上傳的表單提交方式必須是POST方式, 編碼型別:enctype="multipart/form-data",預設是 applicati

Servlet 實現檔案

使用Servlet原生API進行檔案上傳: 一、Upload.java(檔案上傳Servlet) package servlet; import java.io.IOException; import java.io.InputStream; import java.ut

處理檔案後返回json資料在IE出現檔案下載問題

# 後臺返回json格式返回在IE出現檔案下載問題 最近在做一個檔案上傳時候遇到請求返回出現檔案下載的情況,整理一下由於IE不支援Content-Type為application/json格式的返回型別,而上傳時候設定請求Content-Type為multipart/for

JavaWeb筆記-22-檔案、八大細節問題處理

1、檔案上傳 1)上傳檔案對錶單的限制 1. method="post" 2. enctype="multipart/form-data" //多部件表單資料 3. 表單中需要新增檔案表單選項:<input type="file" name="

SpringMVC響應檢視丶檔案丶異常處理丶攔截器

SpringMVC響應資料和結果檢視 返回值分類 返回字串 Controller方法返回字串可以指定邏輯檢視的名稱,根據檢視解析器為物理檢視的地址。 引數可以寫一個Model來儲存域物件中的值 應用例子: @Controller @Req

FastDFS的配置、部署與API使用解讀(8)FastDFS多種檔案介面詳解

《Poechant的FastDFS的配置、部署與API使用教程》 FastDFS的配置、部署與API使用解讀——(1)入門使用教程 FastDFS的配置、部署與API使用解讀——(2)Java API:根據InputStream、檔名、檔案長度上傳檔案 FastDFS的配置、部署與API