1. 程式人生 > >如何在基於Java的Web專案中實現檔案上傳和下載?

如何在基於Java的Web專案中實現檔案上傳和下載?

在Sevlet 3 以前,Servlet API中沒有支援上傳功能的API,因此要實現上傳功能需要引入第三方工具從POST請求中獲得上傳的附件或者通過自行處理輸入流來獲得上傳的檔案,我們推薦使用Apache的commons-fileupload。 
從Servlet 3開始,檔案上傳變得無比簡單,相信看看下面的例子一切都清楚了。

上傳頁面index.jsp:

<%@ page pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Photo Upload</title>
    </head>
    <body>
        <h1>Select your photo and upload</h1>
        <hr/>
        <div style="color:red;font-size:14px;">${hint}</div>
        <form action="UploadServlet" method="post" enctype="multipart/form-data">
        Photo file: <input type="file" name="photo" /><input type="submit" value="Upload" />
        </form>
    </body>
</html>
支援上傳的Servlet:
package com.jackfrued.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/UploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // 可以用request.getPart()方法獲得名為photo的上傳附件;
        // 也可以用request.getParts()獲得所有上傳附件(多檔案上傳),然後通過迴圈分別處理每一個上傳的檔案。
        Part part = request.getPart("photo");
        if (part != null && part.getSubmittedFileName().length() > 0) {
            // 用ServletContext物件的getRealPath()方法獲得上傳資料夾的絕對路徑。
            String savePath = request.getServletContext().getRealPath("/upload");
            // Servlet 3.1規範中可以用Part物件的getSubmittedFileName()方法獲得上傳的檔名,
            // 更好的做法是為上傳的檔案進行重新命名(避免同名檔案的相互覆蓋)。
            part.write(savePath + "/" + part.getSubmittedFileName());
            request.setAttribute("hint", "Upload successfully!");
        } else {
            request.setAttribute("hint", "Upload failed!");
        }
        // 跳轉回到上傳頁面。
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }

}

相關推薦

如何在基於Java的Web專案實現檔案下載

在Sevlet 3 以前,Servlet API中沒有支援上傳功能的API,因此要實現上傳功能需要引入第三方工具從POST請求中獲得上傳的附件或者通過自行處理輸入流來獲得上傳的檔案,我們推薦使用Apac

在SpringMVC框架實現檔案下載

首先在springmvc.xml中配置檔案上傳的屬性 <!-- 檔案上傳的屬性值 --> <bean id="multipartResolver" class="org.springframework.web.multi

JavaWeb檔案下載

對於檔案上傳,瀏覽器在上傳的過程中是將檔案以流的形式提交到伺服器端的,如果直接使用Servlet獲取上傳檔案的輸入流然後再解析裡面的請求引數是比較麻煩,所以一般選擇採用apache的開源工具common-fileupload這個檔案上傳元件。這個common-fileupl

基於tobato的fastdfs與spring boot整合實現檔案下載

專案結構: pom.xml檔案新增配置: <!-- fastdfs --> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastd

ASP.NET實現檔案下載

###### 本文的開發配置 ###### .NET版本:.NET Framework 4.0 開發環境:Microsoft Visual Studio 2013 瀏覽器:IE、Chrome、FireFox等都行   1、搭建網站結構 建立一個新的目錄

Java實現檔案下載

上面的博文我寫了Java對檔案操作的功能https://blog.csdn.net/qq_24380635/article/details/83273359,這次記錄一下檔案上傳和下載的功能。看看兩者有什麼不同,就可以知道檔案操作和檔案上傳下載有什麼不同了。我也是一點點懂,也

Android Retrofit2.0實現檔案下載

這篇主要介紹retrofit框架的上傳檔案到伺服器和從伺服器下載功能的實現 上傳檔案到伺服器 首先 retrofit2.0之前上傳檔案到伺服器需要一個叫TypedFile這個類,但是在2.0版本,這個類被取消了,因為2.0以後,retrofit內部集成了okhttp

spring實現檔案下載 完整方案

1. 簡介 提供基於spring實現檔案(筆記附件)的上傳和下載的完整方案。方案將檔案上傳,並將檔名稱作為欄位與關聯的筆記繫結在一起,更新筆記在資料庫中的記錄。顯示筆記時,根據筆記所繫結的檔名生成下載

SpringBoot實現檔案下載

SpringBoot後臺如何實現檔案上傳下載? 最近做的一個專案涉及到檔案上傳與下載。前端上傳採用百度webUploader外掛。有關該外掛的使用方法還在研究中,日後整理再記錄。本文主要介紹SpringBoot後臺對檔案上傳與下載的處理。 單檔案上傳 // 單檔案上傳 @RequestMapp

Retrofit實現檔案下載【二】

概述 通過前一篇的部落格介紹,我們已經對Retrofit的使用有了一個大概的瞭解,今天來講講利用Retrofit進行檔案的上傳和下載 檔案上傳 伺服器使用的是SSH框架,因此這裡是以struts2的方式來獲取資料的,我這裡定義了三個欄位用來接收上傳過來

使用springMVC實現檔案下載檔案下載

接上一篇,檔案下載需要獲取下載檔案的儲存路徑,這裡只是手動填入,如果是在具體專案中,可以把檔名和上傳後的儲存路徑儲存在資料庫中。然後增加一個檔案列表的頁面展示檔名和檔案路徑,然後點選下載的時候把相應的

springmvc實現檔案下載

springmvc實現檔案上傳的步驟: 1.頁面上,通過input來準備file元件,該標籤,必須給定name屬性值(該name不能和實體類的屬性名一致)同時,要求form表單必須給定一個屬性:enctype="multipart/form-data"<form a

spring實現檔案下載完整方案

1. 簡介 提供基於spring實現檔案(筆記附件)的上傳和下載的完整方案。方案將檔案上傳,並將檔名稱作為欄位與關聯的筆記繫結在一起,更新筆記在資料庫中的記錄。顯示筆記時,根據筆記所繫結的檔名生成下載路徑,提交給服務端完成下載。 2. 檔案上傳 2. 1 前端 在html中插入一個表單用於提交檔案 &

七、springBoot 簡單優雅是實現檔案下載

前言 好久沒有更新spring Boot 這個專案了。最近看了一下docker 的知識,後期打算將spring boot 和docker 結合起來。剛好最近有一個上傳檔案的工作呢,剛好就想起這個腳手架,將檔案上傳和下載整理進來。 配置 在application.properties 中增加上傳檔案存放的路徑配

基於BootStrap的initupload()實現Excel獲取excel的數據

增強for循環 function tail throws tab https pow preview layer 簡單說明:後邊要做exl解析(還沒做呢),所以先有一個excel的的上傳以及獲取excel中的數據,展示出來。 代碼: //html代碼 <div c

Java實現檔案下載的三種解決方案

第一點:Java程式碼實現檔案上傳   FormFile file=manform.getFile();    String newfileName = null;   String newpathname=null;   String fileAddre="/numU

ssm專案檔案

springmvc中,要想實現上傳檔案需要新增jar包 <dependency> <groupId>commons-fileupload</groupId> <artifa

基於jquery的Ajax實現 檔案

---------------------------------------------------------------遇到困難的時候,勇敢一點,找同學朋友幫忙,找導師求助. Ajax Ajax簡介 AJAX(Asynchronous Javascript And XML)翻譯成中文就是“非同

nginx基於lua-resty-upload實現檔案

package.path = '/usr/local/openresty/lualib/resty/?.lua;' local upload = require "upload" local chu

ssh專案檔案

上傳檔案要新增兩個jar包commonse,在pom中新增 <!--檔案上傳,新增這個就直接幫助我們自動新增其他所需的依賴--> <dependency>