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 { &