1. 程式人生 > >Java 實現上傳檔案服務端程式碼(一)

Java 實現上傳檔案服務端程式碼(一)

服務端:通過Servlet + fileupload 等實現

jar:commons-fileupload-1.3.1.jar,commons-io-2.4.jar

客戶端上傳見:Java 上傳檔案客戶端程式碼(二)

package com.http.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

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

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
public class HttpServletUpload extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public HttpServletUpload() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		 this.doPost(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		 PrintWriter out = null;  
	     response.setContentType("text/html;charset=UTF-8"); 
		 //利用apache的common-upload上傳元件來進行  來解析獲取到的流檔案   
		//把上傳來的檔案放在這裡  
        String uploadPath = getServletContext().getRealPath("/upload");//獲取檔案路徑 
        //檢測是不是存在上傳檔案  
        // Check that we have a file upload request  
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
        if(isMultipart){   
            DiskFileItemFactory factory = new DiskFileItemFactory();  
            //指定在記憶體中快取資料大小,單位為byte,這裡設為1Mb  
            factory.setSizeThreshold(1024*1024);  
            //設定一旦檔案大小超過getSizeThreshold()的值時資料存放在硬碟的目錄   
            factory.setRepository(new File("D://temp"));  
            // Create a new file upload handler  
            ServletFileUpload upload = new ServletFileUpload(factory);  
            // 指定單個上傳檔案的最大尺寸,單位:位元組,這裡設為5Mb    
            upload.setFileSizeMax(5 * 1024 * 1024);    
            //指定一次上傳多個檔案的總尺寸,單位:位元組,這裡設為10Mb    
            upload.setSizeMax(10 * 1024 * 1024);     
            upload.setHeaderEncoding("UTF-8"); //設定編碼,因為我的jsp頁面的編碼是utf-8的   
            List<FileItem> items = null;   
            try {  
                // 解析request請求  
                items = upload.parseRequest(request);  
            } catch (FileUploadException e) {  
                e.printStackTrace();  
            }  
            if(items!=null){  
                //把上傳檔案放到伺服器的這個目錄下  
                if (!new File(uploadPath).isDirectory()){    
                    new File(uploadPath).mkdirs(); //選定上傳的目錄此處為當前目錄,沒有則建立    
                }   
                //解析表單專案  
                // Process the uploaded items  
                Iterator<FileItem> iter = items.iterator();  
                while (iter.hasNext()) {  
                    FileItem item = iter.next();  
                    //如果是普通表單屬性  
                    if (item.isFormField()) {  
                        //<input type="text" name="content">  
                        String name = item.getFieldName();//相當於input的name屬性  
                        String value = item.getString();//input的value屬性  
                        System.out.println("屬性:"+name+" 屬性值:"+value);  
                    }  
                    //如果是上傳檔案  
                    else {  
                        //屬性名  
                        String fieldName = item.getFieldName();  
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
                        //上傳檔案路徑  
                        String fileName = item.getName();  
                        fileName = fileName.substring(fileName.lastIndexOf("/")+1);// 獲得上傳檔案的檔名  
                        fileName = sdf.format(new Date()) + ".jpg";
                        try {  
                            item.write(new File(uploadPath,fileName));  
                        } catch (Exception e) {  
                            e.printStackTrace();  
                        }  
                        //給請求頁面返回響應  
                        response.getWriter().println("檔案上傳成功! 檔名是:"+fileName);  
                    }  
                }   
            }   
        }
        
        try {  
            out = response.getWriter();  
            out.print("{success:true, msg:'接收成功'}");  
            out.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
       
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}


相關推薦

Java 實現檔案服務程式碼()

服務端:通過Servlet + fileupload 等實現 jar:commons-fileupload-1.3.1.jar,commons-io-2.4.jar 客戶端上傳見:Java 上傳檔案客戶端程式碼(二) package com.http.servlet;

hadoop生態系統學習之路(三)java實現檔案(本地或ftp)至hdfs

在上一篇博文中,我們講了如何編寫、執行、測試一個MR,但是hdfs上的檔案是手動執行命令從本地linux上傳至hdfs的。在真實的執行環境中,我們不可能每次手動執行命令上傳的,這樣太過繁瑣。那麼,我們可以使用hdfs提供的java api實現檔案上傳至hdfs,

Windows 的java客戶實現檔案到Linux的Hadoop叢集(注意ip和埠是否一致)

我這幾天一直在學大資料,處於入門階段,然後老師的視訊中教學有用windows的java客戶端上傳檔案到Linux的Hadoop叢集, 但是這邊出BUG了一直上傳不上去,執行程式後一直沒反應。。。。弄了幾天(雖然這幾天在做前端專案~~~) 然後問群裡的大佬,他們說應該是ip和埠

java servlet實現檔案程式碼及其原理說明

我們做檔案上傳是不是都是使用第三方外掛,雖然知道原理,但想知道是怎麼實現的吧?一起來看看 上傳解析的實現簡單說一下:     通過ServletRequest類的getInputStream()方法獲得一個客戶端向伺服器發出的資料流、分析上傳的檔案格式,根據分析結果將

win2008 r2 搭建FTP服務實現檔案

如何使用FTP傳輸檔案到伺服器 Win10開啟FTP與配置(完整無錯版)   一、控制面板》程式》開啟或關閉windows功能     二、安裝IIS服務   三、開始》管理工具》計算機管理

基於springMVC+AJAX+bootstraptable實現檔案和客戶分頁

1 首先看一下上傳表格程式碼,主要程式碼如下: <form method="post" enctype="multipart/form-data" id="orderform"> <div class="col-md-6 col-sm-12"&

檔案 04 服務檢測繞過(副檔名檢測)

本文記錄檔案上傳學習過程,教程為 《Upload Attack Framework V1.0》 檔案上傳檢測 客戶端javascript 檢測(通常為檢測副檔名) 服務端MIME 型別

檔案 02 服務檢測繞過(MIME型別檢測)

本文記錄檔案上傳學習過程,教程為 《Upload Attack Framework V1.0》 檔案上傳檢測 客戶端javascript 檢測(通常為檢測副檔名) 服務端MIME 型別

HttpURLConnection實現java後臺檔案和其他引數

最近在對接某第三方視訊服務商的介面,使用java在後臺呼叫他們的介面。在對接設定封面時遇到一個問題,他們需要對個引數,且有一個引數的型別為file。苦尋半天,果。遂記錄如下。 import java.io.DataOutputStream; import j

JAVA檔案至HDFS程式碼及對應jar包

最近需要將本地採集到的檔案上傳到遠端伺服器的HDFS檔案系統當中,弄了很久,找程式碼,找JAR包,很麻煩,記錄一下。 原始碼部分很簡單: import java.io.BufferedInput

VScode 中用sftp自動服務自動重啟

創建 text .com interact 啟動 tar 似的 註釋 同步 sftp 安裝 sftp 工具 這裏我選擇的是名字是sftp的工具 在Visual Studio Code 中按Ctrl + Shift + P並輸入 >extensions install

java圖片-檔案/圖片到七牛

java圖片上傳-檔案(圖片)上傳到七牛 一、在配置檔案中引入依賴(注:七牛開發者url:https://developer.qiniu.com/kodo) <-- 引入依賴 --> <dependency> <

bbs專案富文字編輯器實現檔案到media目錄

media目錄是在project的settings中設定的,static目錄是django自己使用的靜態檔案的上傳目錄,media目錄是使用者自定義上傳檔案的目錄 # Django使用者上傳的檔案都放在media目錄下 MEDIA_URL = "/media/" MEDIA_ROOT = os.pat

移動網頁錄音服務智慧語音識別

移動端網頁錄音上傳,服務端智慧語音識別 最近,看了創業時代的魔鏡,想法突如起來,能不能手機發送一條語音,語音上傳到後臺,自動識別語音的資訊,轉化為文字,將文字分析,然後回覆使用者豔學網的資源。 我們的資源以原始碼為主,一起編集豔學情緣。我們不僅分享原始碼 http://47.98.2

使用第三方元件實現檔案

使用第三方元件實現上傳檔案功能需要在專案lib下目錄匯入兩個Jar包(commons-fileupload 和  commons-io) commons-io下載地址:http://commons.apache.org/proper/commons-io/download_i

tornado+vue實現檔案

要用tornado+vue寫一個後臺管理系統,記錄一下遇到檔案上傳時候的步驟: 1.Form表單裡的程式碼:(這裡是使用的餓了麼表單元件) <el-form-item label="頭像"> <el-upload

微信小程式中實現視訊的開發程式碼

index.wxml <view class="image-plus image-plus-nb" bindtap="chooseVideo"> <view class="image-plus-horizontal"></view> &l

java ftp檔案 支援併發

package com.dl.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ja

java ftp檔案 但是不支援併發

package com.dl.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ja

使用form表單同時實現檔案和提交文字資料

使用form表單同時實現上傳檔案和提交文字資料,此示例中在後臺將檔案上傳到阿里的oss儲存伺服器中 申請oss相關賬號: endpoint = "http://oss-cn-qingdao.aliyuncs.com"; accessKeyId = "key"; accessKeySecret = "secr