1. 程式人生 > >pdf檔案上傳工具js

pdf檔案上傳工具js

原因

現在主流的上傳工具大多需要依賴jQuery來使用,雖然功能強大,擴充套件性好

但是有時候吧,專案中可能不需要那麼強大的功能及擴充套件性,僅僅只需要簡單的上傳一個檔案就可以了

對於用zepto等非jQuery框架的專案來說,很多的上傳元件用不了,於是我就自己寫了一個簡易的檔案上傳指令碼

程式碼

首先說下方法引數,file是需要上傳的檔案所在的input標籤,type=file肯定是需要的

再說下原理,我是直接利用XMLHttpRequest來發送請求的,檔案由FileReader進行base64編碼,資料由FormData封裝

最後上程式碼,程式碼中會有註釋

function uploadFile(file){
	var files = file.files;
	var len = files.length; //多檔案上傳時會用到
	var reader = new FileReader();  //讀取檔案用的
	reader.onload = function(evt) {  //這個onload方法相當於是readAsDataURL方法執行後的回撥,非同步的,畢竟檔案編碼也是要時間的
	    // 新增引數
	    var formData = new FormData();  //formData的用法網上有說明
	    formData.append('file', files[0],files[0].name);  這裡的第三個引數是用來指定檔案的名字,我這裡用的是檔案本身的名字
            formData.append('size', files[0].size);
            formData.append('base64', evt.target.result);
            // 觸發上傳
            var xhr = new XMLHttpRequest();  //建立請求物件
            var uploadUrl = $("#ctx").val(); //專案路徑
            xhr.open('POST', uploadUrl+'/multipartFileUploader');  //介面地址
            xhr.send(formData);
            
            xhr.onload = function () {  //send方法的回撥
                if (xhr.status == 200) {
                var obj = eval('(' + xhr.responseText + ')');  //返回的json資料
                //請求完成以下略
                } else {
                    // 處理其他情況
                    console.log(xhr.responseText.message);
                }
            };

            xhr.onerror = function () {
                // 處理錯誤
            };

            xhr.upload.onprogress = function (e) {
                // 上傳進度
                var percentComplete = ((e.loaded / e.total) || 0) * 100;
            };
            
	}
	reader.readAsDataURL(file.files[0]); //檔案編碼
}

關於FileReader的用法,這篇部落格可以參考

以上是前端js部分上傳檔案的請求程式碼,接下來是後端如何獲取上傳的檔案

我用的是java語言,框架是springboot,程式碼如下

/** 上傳檔案專用介面(返回檔案路徑)  */
@PostMapping("/multipartFileUploader")
@ResponseBody
public ResponseVO multipartFileUploader(@RequestParam(value="file")MultipartFile dataFileFile) {
	String path = fileUploaderService.acceptFile(dataFileFile);
	return ResultUtil.success(path);
}

接下來說說我在接收檔案時所爬的坑

值得注意的地方

1、註解中的file,指的是formData中的file,key值要一致才能獲取

2、MultipartFile這個類啊,在springboot中強轉成其實現類CommonsMultipartFile時會出現型別轉換異常

public static File traMultipartFileToFile(MultipartFile mFile){
	    CommonsMultipartFile cfHeadPic= (CommonsMultipartFile)mFile; //此處會發生異常
	    DiskFileItem fi = (DiskFileItem)cfHeadPic.getFileItem(); 
	    File file = fi.getStoreLocation();
	    return file;
	}

另外,CommonsMultipartFile是需要匯入jar包的,我這裡也貼一下吧

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.2</version>
</dependency>

我在網上找到的解決方案如下

裡面的第一個評論很重要,需要配置一個CommonsMultipartResolver,配置類他也貼出來了,裡面有個小問題,等下再說

配好之後啟動伺服器會報錯,這個坑確實坑了我蠻久,問題出在multipart.enabled屬性上,我的專案裡不知為何這個值需要設定為false,和評論中說的不一樣,目前我還不知道為什麼

之後再啟動就可以執行專案了,可是在 File file = fi.getStoreLocation(); 這一步時報錯,說找不到檔案,我去tomcat對於的路徑上找,確實沒有,這裡就是之前配置類的小問題了,配置類中的setMaxInMemorySize這個屬性代表,當檔案小於這個屬性的值時,會將檔案放入記憶體中,大於該值時才會放入tomcat中,所以我將該值改成1,這樣一來就不會再出現tomcat找不到檔案的情況了,畢竟我並不知道怎麼從記憶體中拿檔案

相關推薦

pdf檔案工具js

原因現在主流的上傳工具大多需要依賴jQuery來使用,雖然功能強大,擴充套件性好但是有時候吧,專案中可能不需要那麼強大的功能及擴充套件性,僅僅只需要簡單的上傳一個檔案就可以了對於用zepto等非jQuery框架的專案來說,很多的上傳元件用不了,於是我就自己寫了一個簡易的檔案上

檔案ajaxFileUpload.js使用方法 包含後臺接收方法

1.   引用ajaxfileupload.js檔案,該檔案依託於jquery,因此需要先引入jquery庫。 2.  JSP頁面編寫方法。其中type為file的input框為了美觀優化,是不顯示,但是有用處的確實該部分。 因此,需要調整好text和bu

bootstrap fileinput 檔案工具

這是我上傳的第二個plugin 首先第一點就是因為這個好看 符合bootstrap的介面風格 第二是可以拖拽(雖然我不常用這個功能 但是這樣介面看起來就豐滿了很多) 最後不得不吐槽這個的回發事件 我百度了很久才找到 CSDN上面也問了 不知道是自己百度的方式不正確還是別的什麼原因..

java pdf 檔案

上傳型別 accept =".pdf" 限制只有pdf的可以上傳 <form action="clientCreditQueryOrder_importFile.do" id="form2" enctype="multipart/form-data" method="post"

Spring MVC 檔案工具

public class UploadFiles { /** * 檔案的名稱 */ private String name; /** * 檔案的新的名稱 */ private String uuidname; /**

springmvc檔案工具

package com.wkrj.business.ntpd.until; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; impo

MultipartFile檔案檔案 接受js檔案

本次帶來的是MultipartFile多檔案檔案上傳,可以在sql執行完成,沒有出現異常,再將檔案儲存進我們的伺服器,如果出現異常,檔案不會上傳到我們的伺服器 上傳圖片工具類 import java.io.File; import java.util.ArrayList; impo

【高效開發外掛】09 FTPUtil FTP 檔案工具

package com.yuu.mall.util; import org.apache.commons.net.ftp.FTPClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory;

java的檔案工具

package util; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; i

Vue 實現 拖拽檔案到網頁進行檔案JS/JQ 原理也是一樣的】

效果: 拖入檔案前: 拖入檔案後: html: <div id="select_frame"> <div ref="select_frame" class=

File Uploader:支援進度顯示與檔案拖拽的多檔案前端JS指令碼

File Uploader的前身是Ajax Upload。按照官方的說法,升級到FileUploader主要是添加了一些新的特性,修正了一些比較嚴重的錯誤。但在我這個使用者看來,二者最大的不同在於:File Uploader不在基於jQuery。另外,File Upload

雲展網教程 | 如何製作PDF檔案雲展網?

雲展網僅支援PDF檔案上傳,但是沒有PDF檔案怎麼辦呢?以下推薦幾種製作PDF檔案的方法: 方法一:圖片轉換為PDF檔案 有許多使用者有圖片檔案,您可以把圖片檔案轉換為PDF檔案哦。 方法二:使用專業PDF製作工具製作 例如Adobe Indesign、Adobe Acrob

檔案漏洞——JS繞過

預備知識 【BurpSuite】的基本使用 客戶端javascript檢測的原理 【中國菜刀】的基本使用 實驗目的 繞過JavaScript驗證檢測,上傳一句話木馬。-- 實驗工具 BurpSuite、中國菜刀、一句話木馬 實驗環境 伺服器一臺(Window

js檔案以及js清空input file值

最近專案中遇到檔案上傳的案例, 之前涉及檔案上傳的較少, 今天針對js檔案上傳的案例做一個詳細的教程,方便日後查閱! 本教程從 原生JS, jQuery, 兩處著手簡單介紹檔案上傳案例 1、原生JS var test= document.getElementById

[原創]K8 Struts2 Exp 20170310 S2-045(Struts2綜合漏洞利用工具) [原創]Struts2奇葩環境任意檔案工具(解決菜刀無法檔案亂碼等問題)

工具: K8 Struts2 Exploit組織: K8搞基大隊[K8team]作者: K8拉登哥哥部落格: http://qqhack8.blog.163.com釋出: 2014/7/31 10:24:56簡介: K8 Stru

[原創]Struts2奇葩環境任意檔案工具(解決菜刀無法檔案亂碼等問題)

 上面這問題問得好  1 不知道大家有沒碰到有些Strus2站點  上傳JSP後訪問404 或者503    注意我說的是404或503不是403(要是403換個css/img等目錄或許可以)    但對於明明

pdf檔案成功後,下載出錯的問題原因

先是在j2EE環境下,上傳成功,下載後,pdf 檔案打不開  ,但是其他型別的檔案都沒問題 試驗.net環境下,問題依舊。 換了幾個 pdf 檔案, 發現有的有問題,但有的就沒有問題 於是,問題聚焦在 pdf 檔案上 經查,發現,原來,有的 pdf 檔案經過了密碼保護,

檔案工具類及配置FastDFSUtils

上傳圖片工具類import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.io

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

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

檔案工具

package com.itheima.utils; import java.util.UUID; /**  * 檔案上傳的工具類  * @author Administrator  */ public class UploadUtils {  &