1. 程式人生 > >檔案上傳那些事兒

檔案上傳那些事兒

最近M端專案中涉及到圖片上傳功能,現把專案中遇到的一些問題及解決辦法分享如下,與各位共同探討:

一、相關需求:

1. 客戶端上限10M
2. 伺服器端上限2M
3. 檔案過濾
4. 顯示上傳進度
5. 非同步上傳
6. 多檔案上傳

二、需求分析:

1. 實現2,可使用canvas在前端實現壓縮(base64);
2. 實1、3,可採用file.size及/image/.test(file.type)過濾;
3. 實現4,使用XHR2實現上傳,新增進度時間監控,xhr.upload.addEventListener(“progress”, uploadProgress, false);
4. 實現5,使用XHR2實現上傳;
5. 多檔案上傳,單檔案迴圈上傳即可,但是相容進度時,需單檔案各自監控;

三、需求實現:

實現一:二進位制方式上傳
需求1、3、4、5、6皆可實現,但是伺服器端上傳2M,使用canvas方式壓縮後生成的是base64,若使用此方式上傳,必須把base64轉換成二進位制流,GitHub上也有相關文章把base64轉換成二進位制流的,使用xhr.sendAsBinary()傳送二進位制流,參考此文,測了一部分常見機型,可以實現,具體是否可以在專案中使用還有待論證。二進位制上傳實現部分程式碼僅供參考:

01 var uploadFile = function(fileid, file) {
02
var xhr = new XMLHttpRequest(),
03 fd = new FormData,
04 url = "/picture/upload",
05 // 上傳進度
06 uploadProgress = function(evt) {
07 if (evt.lengthComputable) {
08 var
 percent = (evt.loaded * 100 / evt.total).toFixed(1);
09 // show percent
10 }else {
11 console.log('unable to compute');

相關推薦

檔案那些事兒

最近M端專案中涉及到圖片上傳功能,現把專案中遇到的一些問題及解決辦法分享如下,與各位共同探討: 一、相關需求: 1. 客戶端上限10M 2. 伺服器端上限2M 3. 檔案過濾 4. 顯示上傳進度 5. 非同步上傳 6. 多檔案上傳 二、需求

檔案那些事兒:多圖、大檔案、斷點續功能實現與分析

簡介 看了不少的教程,在系統整合搭建的過程中一般寫到檔案上傳這一節時,基本上實現一個檔案上傳功能就不再繼續拓展,而是就此截止轉而去講解其他的內容了,因為企業級應用開發中這些功能肯定會使用到,企業網站的檔案上傳不可能只有一個單圖上傳,也不可能不實現大檔案的功能處

前端圖片那些事兒

本文講的圖片上傳,主要是針對上傳頭像的。大家都知道,上傳頭像一般都會分成以下 4 個步驟: 選擇圖片 -> 預覽圖片 -> 裁剪圖片 -> 上傳圖片 接下來,就詳細的介紹每個步驟具體實現。 選擇圖片 選擇圖片有什麼好講的呢?不就一個 input[type=file] ,然後點選就可以了嗎

[CKEditor那點事兒]使用java開發ckeditor的檔案功能

關於CKEditor的使用,網路上有無數的文章,這裡不再贅述。而關於java支援的檔案上傳功能,網路上同樣有千千萬萬的文章,但是遍歷十幾二十篇就會發現,千篇一律的抄襲,各種爬蟲程式帶來的網際網路資訊垃圾給我們的資訊獲取帶來很大的障礙。那些使用java開發CKEditor上傳和

springMVC檔案,MultipartHttpServletRequest、MultipartFile進行檔案

這裡使用apache的開源jar包完成上傳功能,使用jar包分別是:common-fileupload.jar和common-io.jar  先編寫上傳檔案幫助類,如果需要區分檔案型別,可以將檔案字尾擷取進行判斷; springmvc-mvc.xml配置,這裡主要配置spri

圖片檔案示例

程式碼片段: //新增post @RequestMapping(method=RequestMethod.POST, value="/addPost") @ResponseBody public int addPost(Post post, MultipartFile file

檔案下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的值?

一、問題描述 檔案上傳下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的有關使用者資訊的值?(比如:textfield、radio等屬性中的值) 二、解決方法 1、情況一:沒有對user物件進行封裝 方法:

struts2實現檔案與下載功能

一、Demo介紹 基於struts2框架,實現多檔案的上傳和下載功能。 實現原理圖: 部分介面圖: 上傳成功及下載頁面: 二、主要程式碼 uploadFile.jsp:在form表單中包含一個文字框(上傳使用者的姓名)和兩個檔案上傳選項. <%@

Java Springboot結合FastDFS實現檔案以及根據圖片url將圖片至圖片伺服器

上一篇文章我們已經講解了如何搭建FastDFS圖片伺服器,環境我們準備好了現在就讓我們開始與Java結合將他應用到實際的專案中吧。本篇文章我們將會展示上傳圖片到FastDFS圖片伺服器以及通過外網的圖片url將圖片上傳至我們自己的圖片伺服器中。 1.建立springbo

Java框架-SpringMVC的應用(json資料互動、控制器方法返回值、檔案

1. 搭建SpringMVC開發環境 1.1 建立專案,新增依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x

linux中檔案下載

windows篇 linux檔案下載到windows   sz命令   登入到linux伺服器使用 sz log.log 命令,彈出對話方塊選擇下載檔案的目錄,點選確定即可。   windows檔案上傳到linux   rz命令   登入到linux伺服器使用rz命令,彈出檔

Bootstrap fileinput.js,最好用的檔案元件

本篇介紹如何使用bootstrap fileinput.js(最好用的檔案上傳元件)來進行圖片的展示,上傳,包括springMVC後端檔案儲存。 一、demo 二、外掛引入 <link type="text/css" rel="stylesheet" h

scp檔案

scp -P port file_name [email protected]:/dir_name 實際: scp -P 23245 /Users/zw/Documents/gitProjects/pulldata-service/classes/artifacts/upload_jar/pul

Django2 Web 實戰03-檔案

作者:Hubery 時間:2018.10.31 接上文:接上文:Django2 Web 實戰02-使用者註冊登入退出 視訊是一種視覺化媒介,因此視訊資料庫至少應該儲存影象。讓使用者上傳檔案是個很大的隱患,因此接下來會討論這倆話題:檔案上傳,安全隱患。 新增一個檔案上傳函式,讓使用者給movie上傳

C# 檔案到七牛雲伺服器(一)

本章講述:C# 中呼叫七牛雲提供的SDK,實現檔案簡單上傳功能。 分片,斷點續上傳講解,請檢視:C# 檔案上傳到七牛雲伺服器(二) 地址為: 開發流程步驟地址:https://blog.csdn.net/BYH371256/article/details/79868562 1、把

falsk之檔案

  在使用flask定義路由完成檔案上傳時,定義upload檢視函式 from flask import Flask, render_template from werkzeug.utils import secure_filename import os app = Flask

SpringBoot圖片(三)——呼叫檔案專案的方法(同時啟動兩個專案)

簡單說明:圖片上傳有一個專門的工程A,提供了圖片的上傳和下載預覽,工程B涉及到圖片上傳以及回顯,都是呼叫的工程A的方法,言外之意就是要同時啟動兩個專案。 程式碼: //工程B的html程式碼 <div class="col-md-12"> <label class="cont

17.[CVE-2017-12615]Tomcat任意檔案漏洞

【CVE-2017-12615】 Tomcat任意檔案上傳漏洞 首先先貼出wooyun上的一個案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0107097.html 看到這個漏洞讓我想到了IIS6.0任意檔案上傳的漏洞,不過現在大多都用工具,比如I

springMVC的檔案於下載

                                     springMVC的檔案上傳於下載