檔案上傳和下載(三)--【SmartUpload】
一、簡介
SmartUpload一種java上傳元件包,可以輕鬆的實現檔案的上傳及下載功能。
使用該元件可以輕鬆的實現上傳檔案的限制,也可以輕易的取得檔案上傳的名稱、字尾、大小等。
三、具體實現例子【jsp+SmartUpload】
專案目錄
web.xml配置
後臺servlet<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>SmartUploadServlet</servlet-name> <servlet-class>com.wuhn.smartupload.servlet.SmartUploadServlet</servlet-class> </servlet> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>SmartDownloadServlet</servlet-name> <servlet-class>com.wuhn.smartupload.servlet.SmartDownloadServlet</servlet-class> </servlet> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>BatchSmartDownloadServlet</servlet-name> <servlet-class>com.wuhn.smartupload.servlet.BatchSmartDownloadServlet</servlet-class> </servlet> <!-- 上傳servlet --> <servlet-mapping> <servlet-name>SmartUploadServlet</servlet-name> <url-pattern>/SmartUploadServlet.do</url-pattern> </servlet-mapping> <!-- 下載servlet --> <servlet-mapping> <servlet-name>SmartDownloadServlet</servlet-name> <url-pattern>/SmartDownloadServlet.do</url-pattern> </servlet-mapping> <!-- 批量下載servlet --> <servlet-mapping> <servlet-name>BatchSmartDownloadServlet</servlet-name> <url-pattern>/BatchSmartDownloadServlet.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
SmartUploadServlet.java
package com.wuhn.smartupload.servlet; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jspsmart.upload.SmartUpload; import com.jspsmart.upload.SmartUploadException; /** * @author wuhn * @建立時間 2015-12-08 * @功能 SmartUpload 上傳 * **/ public class SmartUploadServlet extends HttpServlet { /** * The doGet method of the servlet. */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response);//預設post } /** * The doPost method of the servlet. * */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設定上傳檔案儲存路徑 String filePath = getServletContext().getRealPath("/")+"images"; File file = new File(filePath); if(!file.exists()){ file.mkdir(); } SmartUpload smartUpload = new SmartUpload(); //初始化物件 smartUpload.initialize(getServletConfig(), request, response); //設定上傳檔案 smartUpload.setMaxFileSize(1024*1024*10); //設定所有檔案的大小 smartUpload.setTotalMaxFileSize(1024*1024*100); //設定檔案的型別 smartUpload.setAllowedFilesList("txt,jpg,gif"); String result = "上傳成功!"; //設定禁止上傳的檔案型別 try { smartUpload.setDeniedFilesList("rar,jsp,js"); //上傳檔案 smartUpload.upload(); //儲存檔案 int count = smartUpload.save(filePath); } catch (Exception e) { //捕捉Exception異常 ,不然捕捉到異常 result = "上傳失敗!"; if(e.getMessage().indexOf("1015") != -1){ result = "上傳失敗:上傳檔案型別不正確!"; }else if (e.getMessage().indexOf("1010") != -1) { result = "上傳失敗:上傳檔案型別不正確!"; }else if (e.getMessage().indexOf("1105") != -1) { result = "上傳失敗:上傳檔案大小大於允許上傳的最大值!"; }else if (e.getMessage().indexOf("1110") != -1) { result = "上傳失敗:上傳檔案總大小大於允許上傳總大小的最大值!"; } e.printStackTrace(); } //獲取上傳檔案的屬性 for(int i=0;i<smartUpload.getFiles().getCount();i++){ com.jspsmart.upload.File tempFile = smartUpload.getFiles().getFile(i); System.out.println("***************"); System.out.println("表單中name的值:"+tempFile.getFileName()); System.out.println("上傳檔名:"+tempFile.getFileName()); System.out.println("上傳檔案大小:"+tempFile.getSize()); System.out.println("上傳檔案的拓展名:"+tempFile.getFileExt()); System.out.println("上傳檔案全名:"+tempFile.getFilePathName()); System.out.println("***************"); } System.out.println("上傳結果:"+result); request.setAttribute("result", result); request.getRequestDispatcher("/jsp/01.jsp").forward(request, response); } }
SmartDownloadServlet.java
package com.wuhn.smartupload.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jspsmart.upload.SmartUpload; import com.jspsmart.upload.SmartUploadException; /** * @author wuhn * @建立時間 2015-12-08 * @功能 SmartUpload 下載 * **/ public class SmartDownloadServlet extends HttpServlet { /** * The doGet method of the servlet. <br> * */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * The doPost method of the servlet. <br> */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String result = "下載成功"; //獲取下載的檔名 String filename = request.getParameter("filename"); //下載 SmartUpload smartUpload = new SmartUpload(); smartUpload.initialize(getServletConfig(), request, response); smartUpload.setContentDisposition(null);//取消預設開啟方式 try { smartUpload.downloadFile("/images/"+filename); } catch (Exception e) { result = "下載失敗"; System.out.println("********異常處理********"); if(e.getMessage().indexOf("系統找不到指定的路徑。") != -1){ result = "下載失敗:檔案不存在!"; } e.printStackTrace(); } request.setAttribute("result", result); request.getRequestDispatcher("/jsp/02.jsp").forward(request, response); } }
BatchSmartDownloadServlet.java
package com.wuhn.smartupload.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author wuhn
* @建立時間 2015-12-09
* @功能 SmartUpload 批量下載
* **/
public class BatchSmartDownloadServlet extends HttpServlet {
/**
* The doGet method of the servlet.
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
/**
* The doPost method of the servlet.
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//設定下載相應資訊
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename=test.zip");
//下載路徑
String path = getServletContext().getRealPath("/")+"images/";
//獲取下載的所有檔名
String[] filenames = request.getParameterValues("filename");
String str = "";
String rt = "\r\n";
//設定壓縮資訊
ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
//獲取需要下載的檔案
for(String filename:filenames){
str += filename + rt;
File file = new File(path + filename);
zipOutputStream.putNextEntry(new ZipEntry(filename));//加入壓縮檔案
FileInputStream fileInputStream = new FileInputStream(file);
byte b[] = new byte[1024];
int n=0;
while ((n=fileInputStream.read(b)) != -1) {
zipOutputStream.write(b, 0, n);
}
zipOutputStream.flush();
fileInputStream.close();
}
zipOutputStream.setComment("download success:" + rt +str);//zip註釋資訊
zipOutputStream.flush();
zipOutputStream.close();
}
}
前臺頁面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>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.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 target="_blank" href="<%=path%>/jsp/01.jsp">上傳01</a>
<br>
<a target="_blank" href="<%=path%>/jsp/02.jsp">下載02</a>
<br>
<a target="_blank" href="<%=path%>/jsp/03.jsp">批量下載03</a>
</body>
</html>
01.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>SmartUpload_批量上傳</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>
<form action="<%=path%>/SmartUploadServlet.do" method="post" enctype="multipart/form-data">
上傳檔案1:<input id="myfile1" name="myfile1" type="file"/><br>
上傳檔案2:<input id="myfile2" name="myfile2" type="file"/><br>
上傳檔案3:<input id="myfile3" name="myfile3" type="file"/>
<input type="submit" value="提交" /> ${result}
</form>
</body>
</html>
02.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>
<head>
<base href="<%=basePath%>">
<title>My JSP '02.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="<%=path %>/SmartDownloadServlet.do?filename=jplin-css.jpg">檔案</a> ${result}
</body>
</html>
03.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>
<head>
<base href="<%=basePath%>">
<title>批量下載</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>
<h3>批量下載</h3>
<form action="<%=path %>/BatchSmartDownloadServlet.do" method="post">
<input type="checkbox" name="filename" value="jplugin-css.jpg"/>jplugin-css.jpg<br>
<input type="checkbox" name="filename" value="jplugin-multiple.jpg"/>jplugin-multiple.jpg<br>
<input type="checkbox" name="filename" value="jplugin-nocss.jpg"/>jplugin-nocss.jpg<br>
<input type="submit" value="提交">
</form>
</body>
</html>
相關推薦
檔案上傳和下載(三)--【SmartUpload】
一、簡介 SmartUpload一種java上傳元件包,可以輕鬆的實現檔案的上傳及下載功能。 使用該元件可以輕鬆的實現上傳檔案的限制,也可以輕易的取得檔案上傳的名稱、字尾、大小等。 三、具體實現例子【jsp+SmartUpload】 專案目錄 web.xml配置
檔案上傳和下載(二)--【struts2】
一、簡介 struts2在原有的上傳解析器繼承上做了進一步封裝,更進一步簡化了檔案上傳。 struts2預設使用的是Jakarta和Common-FileUpload的檔案上傳框架,因此,如果需要使用struts2的檔案上傳功能,則需要在web應用匯入相關jar包。 二、
Retrofit實現檔案上傳和下載【二】
概述 通過前一篇的部落格介紹,我們已經對Retrofit的使用有了一個大概的瞭解,今天來講講利用Retrofit進行檔案的上傳和下載 檔案上傳 伺服器使用的是SSH框架,因此這裡是以struts2的方式來獲取資料的,我這裡定義了三個欄位用來接收上傳過來
【IOS學習】http非同步檔案上傳和下載以及進度指示
2016-02-12 13:05:07.330 network-demo[16708:1254465] =================request redirectResponse================= 2016-02-12 13:05:07.331 network-demo[16708:
struts2學習筆記十五(第15講.Struts2的檔案上傳和下載續三)
[/code][b][size=xx-large]Struts2的檔案上傳和下載續三[/size][/b][color=red]功能:[/color]使用者可以自定義上傳檔案的個數,如果新增的個數多了的話,還可以進行刪減。一、修改之前根目錄下的upload.jsp檔案:[co
javaExcel檔案上傳和下載
上傳在頁面必須加上下面屬性 <form method="post" enctype="multipart/form-data" target="frameFile" action="${vehiclePath }/bindVehicle?${_csrf.parameterName}=$
xshell 檔案上傳和下載
xshell 檔案上傳和下載 介紹兩種方式:命令、工具 上傳和下載參照物件是本機 命令: 1.sz 檔案下載(檔案大小限制 4G) 2.rz 檔案上傳 工具: File Transfer(工具欄中有) 這個沒有上
Struts2的檔案上傳和下載(1)單檔案上傳
在struts2中整合fileuoload功能,因為在匯入的jar包中包含了common-fileipload.jar檔案 在struts2中的interceptor 中有一個fileupload攔截器,他的主要功能就是完成檔案上傳。 注意事項 method=post
SpringMVC檔案上傳和下載
1. 檔案上傳 SpringMVC通過MultipartResolver來實現檔案上傳,預設沒有裝配,使用MultipartResolver需要加上commons-fileupload這個jar包。 1.1 配置MultipartResolver <!--配置上傳檔案控制元
**#使用springboot進行檔案上傳和下載**
使用springboot進行檔案上傳和下載 ##檔案下載功能的實現思路: 1.獲取要下載的檔案的絕對路徑 2.獲取要下載的檔名 3.設定content-disposition響應頭控制瀏覽器以下載的形式開啟檔案 4.獲取要下載的檔案輸入流 5.建立資料緩衝區//緩衝區解釋
asp.net 檔案上傳和下載管理原始碼
利用asp.net進行檔案上傳和下載時非常常用的功能,現做整理,將原始碼上傳,提供給初學者參考,以下程式碼中的樣式檔案就不上傳了,下載者請將樣式去掉。 效果圖如下: <%@ Page Language="C#" AutoEventWireu
基於OkHttp網路通訊工具類(傳送get、post請求、檔案上傳和下載)
一、為什麼要用OkHttp? okhttp是專注於提升網路連線效率的http客戶端。 優點: 1、它能實現同一ip和埠的請求重用一個socket,這種方式能大大降低網路連線的時間,和每次請求都建立socket,再斷開socket的方式相比,降低了伺服器伺服器的壓力。 2、okhttp 對
Spring MVC中檔案上傳和下載
檔案上傳 檔案上傳需將表格的提交方式設為"POST",並且將enctype設為"multipart/form-data",以二進位制的方式提交資料。 spring mvc中可通過MultipartResolver監聽每個請求,如有上傳的檔案,則把請求封裝為MultipartH
ASP.NET實現檔案上傳和下載
###### 本文的開發配置 ###### .NET版本:.NET Framework 4.0 開發環境:Microsoft Visual Studio 2013 瀏覽器:IE、Chrome、FireFox等都行 1、搭建網站結構 建立一個新的目錄
Struts2的檔案上傳和下載(2)限制檔案的大小和型別
要在struts.xml中對Action進行配置,要在Action配置中加入檔案過濾攔截器fileUpload。struts.xml的配置資訊如下所示: <package name="struts2" namespace="/" extends="struts-default">
Android關於FTP檔案上傳和下載功能詳解
Android關於FTP檔案上傳和下載功能詳解 更新時間:2017年09月21日 11:41:14 作者:一諾的祕密花園 我要評論 這篇文章主要為大家詳細介紹了Android關於FTP檔案上傳和下載功能,具有一定的參考價值,感興趣
Spring Boot 檔案上傳和下載
前言:以前的專案中檔案上傳下載會寫大量程式碼來實現,但是在Spring Boot中,簡化了大量程式碼,上傳只需要2行程式碼即可 package com.demo.controller; import com.demo.model.FileInfo; import org.
HDFS的檔案上傳和下載
Java API獲取HDFS的檔案資訊 1).獲取檔案屬性 環境:Windows Java API 函式:mkdir、FileStatus[]、listStatus、isDirectory @Test public void test1() throws Excep
檔案上傳和下載
檔案的上傳和下載 檔案上傳 檔案上傳的三要素 提供form表單,method必須是post form表單的enctype必須是multipart/form-data 提供 input type = “file” 型別輸入 檔案上傳注意的細
檔案上傳和下載的基礎知識
上傳使用者: 上傳檔案1: 上傳檔案2: 上傳檔案的表單注意項: ①請求方式必須是post ②使用file的表單域 ③使用multipart/form-data的請求編碼方式 1.什麼是multipart/form-data? 首先我們需要明白在html中