1. 程式人生 > >JavaWeb從後臺下載檔案

JavaWeb從後臺下載檔案

最近博主在做一個專案,就做到有關檔案上傳下載的功能,現在來程式碼實現一下如何進行通過前端
點選下載,來下載存在後臺的圖片。

首先博主做得專案的主要功能是從客戶傳照片到伺服器,在通過伺服器處理後存到伺服器後臺,客戶
可以在伺服器處理完後立即下載該圖片
因此,我的下載介面程式碼如下:

UploadPSucceed.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request
.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'UploadPSucceed.jsp' starting page</title> <meta
http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page">
<!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 恭喜你,圖片上傳成功! <a href=/Picture3/DownLoadPicture>下載圖片</a> </body> <font color="red" size="2"> ${message}</font> </html>

介面如下,顯示的是我上傳圖片成功之後的介面,重點是在後面的下載圖片按鈕上:
這裡寫圖片描述

接下來就是後臺怎麼響應前端提交的下載圖片的請求了:

DownloadPicture.java

package com.picture.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class DownLoadPicture extends HttpServlet {

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

        response.setContentType("text/html;charset=utf-8");
        response.setCharacterEncoding("utf-8");

        try {

            // 開啟檔案
            // 獲取到要下載檔案的全路徑
            // 得到要下載的檔名,小夥伴可以根據自己的實際檔名更改,這裡是博主自己定義的檔名
            String destinationfileName = request.getSession().getAttribute("destinationfileName").toString();
            destinationfileName = new String(destinationfileName.getBytes("iso8859-1"), "utf-8");
            // 得到要下載的檔案的所在目錄,同上,小夥伴可以根據自己專案更改內容
            String uploadpath = request.getSession().getAttribute("uploadPath").toString();

            // 得到要下載的檔案
            File file = new File(uploadpath + "\\" + destinationfileName);

            //如果檔案不存在,則顯示下載失敗
            if (!file.exists()) {
                request.setAttribute("message", "下載失敗");
                request.getRequestDispatcher("/WEB-INF/UploadPSucceed.jsp").forward(request, response);
                return;
            } else {

                // 設定相應頭,控制瀏覽器下載該檔案,這裡就是會出現當你點選下載後,出現的下載地址框
                response.setHeader("content-disposition",
                        "attachment;filename=" + URLEncoder.encode(destinationfileName, "utf-8"));
                // 讀取要下載的檔案,儲存到檔案輸入流
                FileInputStream in = new FileInputStream(uploadpath + "\\" + destinationfileName);
                // 建立輸出流
                OutputStream out = response.getOutputStream();
                // 建立緩衝區
                byte buffer[] = new byte[1024];
                int len = 0;
                // 迴圈將輸入流中的內容讀取到緩衝區中
                while ((len = in.read(buffer)) > 0) {
                    // 輸出緩衝區內容到瀏覽器,實現檔案下載
                    out.write(buffer, 0, len);
                }
                // 關閉檔案流
                in.close();
                // 關閉輸出流
                out.close();
            }
        } catch (Exception e) {
            // TODO: handle exception

        }

    }

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

        this.doGet(request, response);

    }

}

具體演示如下:
這裡寫圖片描述

至此,如何從後臺獲取檔案就是這樣實現的啦,希望對你有幫助。

相關推薦

JavaWeb後臺下載檔案

最近博主在做一個專案,就做到有關檔案上傳下載的功能,現在來程式碼實現一下如何進行通過前端 點選下載,來下載存在後臺的圖片。 首先博主做得專案的主要功能是從客戶傳照片到伺服器,在通過伺服器處理後存到伺服器後臺,客戶 可以在伺服器處理完後立即下載該圖片 因此

Java Web實現使用瀏覽器伺服器下載檔案(後臺)

Java Web實現 使用瀏覽器從伺服器下載檔案。 下面實現兩種情況的下載,需求如下:需求(一):1、使用者在頁面填寫表單。 2、填寫完成後,選擇下載,將表單內容發往後臺。 3、後臺根據內容生產一個檔案,傳送給前端。 4、前端成功下載檔案到本地。 此需求簡單來說就是,使用者在

Java伺服器下載檔案到本地

我的需求是從伺服器端的某磁碟中獲取amr檔案,並下載。 首先傳遞的引數strUrl為物理路徑,是絕對路徑。 //獲取檔名,此處看個人如何設計的 String filename = strUrl.substring(strUrl.lastIndexOf("/")+1); filena

RestTemplate後臺下載檔案demo

@RequestMapping(path="/test", method=RequestMethod.GET) public void productDat2(@RequestParam final Long id, HttpServletResponse response) { Xxx byId

使用“rz -be”命令上傳檔案至伺服器;使用“sz 檔名”伺服器下載檔案到本地

我們知道在與linux 做檔案交換的時候,經常會使用到windows 檔案上傳到linux 或者linux 檔案下載到windows之類的情況,其中大家使用比較常用的就是 Xftp,sftp,FileZilla等,那麼今天就介紹另外一種方式上傳與下載檔案rz/sz 測試環境: CentOs

簡單實現瀏覽器下載檔案

最容易出錯到點 JDBC連線資料庫卻忘記導包:mysql-connector-java-5.1.7-bin.jar 使用Servlet卻忘記導tomcat的包:servlet-api.jar,這個包在tomcat/lib中找到 自己手寫Servlet卻忘記到web.x

瀏覽器伺服器下載檔案的Servlet例項

測試兩種下載:瀏覽器通過伺服器下載其他網站檔案(http協議);瀏覽器下載伺服器本地硬盤裡的檔案(file協議) 1.工具類downloadUtils.java的核心部分 //伺服器使客戶端可以從遠端url下載檔案 public void download(String

pythonFTP下載檔案

#!/usr/bin/python # -*- coding: utf-8 -*- """ FTP常用操作 """ from ftplib import FTP import os class FTP_OP(object): def __init__(self, host, us

伺服器下載檔案DOWNLOAD_WEB_OBJECT

FORM DOWNLOAD_EXCEL_DATA USING FP_DOWN_FILE  LIKE sapb-sappfad.  data: l_down_save LIKE rlgrap-filename.  DATA: l_qty like vbap-kwmeng.  "pri_pack-cqty.  d

php伺服器下載檔案到本地

/* *功能:php完美實現下載遠端圖片儲存到本地 *引數:檔案url,儲存檔案目錄,儲存檔名稱,使用的下載方式 *當儲存檔名稱為空時則使用遠端檔案原來的名稱 */ function getImage($url,$save_dir='',$filename='',$

Linux下載檔案到Windows沒有換行問題

  這是一個小問題,一般用txt開啟檔案才會遇到,word開啟也是正常(估計其他程式設計軟體開啟也正常)。   順便提一下pscp從Linux上下載檔案到Windows。 C:\Users\xuefei>pscp [email protected]:/home/xf/b.sh c:\

js動態請求後臺下載檔案

<button type="button" onclick="download()">匯出</button>function download() { var url = 'download/?filename=aaa.txt'; var x

python用 requests 模組 Web 下載檔案

requests 模組讓你很容易從 Web 下載檔案,不必擔心一些複雜的問題,諸如網路錯誤、連線問題和資料壓縮。requests 模組不是 Python 自帶的,所以必須先安裝。通過命令列,執行 pip install requests。編寫 requests 模組是因為 P

tomcat下載檔案

其實最開始的需求,就是希望使用tomcat下載伺服器上的一些檔案。當然如果檔案就放在{tomcat_home}/webapp/myproject/下那一切都好辦。但是把自己放在這裡,每次eclipse那邊一啟動,東西就沒了。不合適。方案一從網上查到的資料,是這樣的。1、在to

java 伺服器下載檔案並儲存到本地

最近在做專案,做到檔案的下載,假設公司有檔案伺服器(像ftp或者其他),像開發人員怎麼進行從檔案伺服器上下載檔案到本地指定目錄下!又或者需要從網上下載資源到本地指定的目錄下,這時候最需要關心的幾個問題就是: (1)客戶端發起一個url請求,獲取連線物件。      

XShell本地上傳檔案到Ubuntu上及Ubuntu下載檔案到本地

使用XShell本地上傳檔案到Ubuntu上及從Ubuntu下載檔案到本地。 1.第一種方法是最常用的 :如果下載了Xshell和Xftp,Ctrl+Alt+F就可以選擇檔案的互傳了!(虛擬機器/雲伺服器通用)--只要相互間能ping得通。 2.第二種方法 :

檔案上傳到資料庫 和 資料庫下載檔案到本地

有時候我們需要把圖片、文件、dll檔案、等等,上傳的資料庫,然後當需要的時候再從資料庫中讀取到本地,下面我以上傳圖片為例,講解一下如何把本地的一張圖片上傳到資料庫,然後再從資料庫下載到本地。   工具:VS2010,Sql Server 2000。語言:C#。   像

javaFTP下載檔案功能

java下載檔案功能,匯出的時候會下載到瀏覽器預設下載資料夾裡,360瀏覽器會彈出一個儲存檔案的彈出框 //下載匯出報表 //JS function downloadExport(filename){ window.location.href=”

Java伺服器下載檔案到本地(親測有效)

我用的是swagger 前後臺分離的專案 我的需求是從伺服器端的某磁碟中獲取按模板生成的word檔案,並下載。 思路:  按模板在伺服器上生成一個word文件  通過流的方式讀取word響應給瀏覽器  最後刪除在伺服器生成的word文件 public void word

網路學習 Linux 伺服器下載檔案的命令總結

1 yum  或者  apt-get 這兩個命令是從自己的下載中心裡查詢對應的安裝包  :  所有yum 或者 apt-get 無需指定  http 地址,只需要 指定安裝包的名字就行了。 區別,對應不同的Linux系統 yum 對應 centos apt-ge