java-plupload上傳大文件

參考連接:javascript

https://blog.csdn.net/hjf_1291030386/article/details/74784172php

https://www.cnblogs.com/tengyunhao/p/7670293.htmlhtml

http://www.javashuo.com/article/p-yuxgpkex-e.html前端

配置文件:html5

<!-- 文件上傳 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8" />
        <property name="resolveLazily" value="true"/>
        <property name="maxUploadSize" value="100000000" />
        
    </bean>

.jsp(引用plupload.full.min.js文件)java

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    String ctx = request.getContextPath();
    request.setAttribute("ctx", ctx);
%>
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>XXX</title>
</head>
<body>
<div>
    <button id="btnUploadFile">選擇文件</button>
    <button id="" onclick="fnUploadFile2()">開始上傳</button>
    
</div>
</body>
<%-- <script type="text/javascript" src="${ctx }/common/js/jquery.js"></script> --%>
<jsp:include page="../base/footer.jsp" />
<script type="text/javascript">var uploader = new plupload.Uploader({ //建立實例的構造方法 
        runtimes: 'html5,flash,silverlight,html4', //上傳插件初始化選用那種方式的優先級順序 
        browse_button: 'btnUploadFile', // 上傳按鈕 
        url:'${ctx}/fileUpload/pluploadFile', //遠程上傳地址
        flash_swf_url: 'plupload/Moxie.swf', //flash文件地址 
        silverlight_xap_url: 'plupload/Moxie.xap', //silverlight文件地址 
        max_retries: 3,   //容許重試次數
        max_file_size: '2000mb', //最大上傳文件大小(格式100b, 10kb, 10mb, 1gb) 
        chunk_size: '10mb',//分塊大小
        filters: {
            mime_types: [ //容許文件上傳類型 
                { title: "files", extensions: "jpg,png,gif,mp4,docx,doc,pdf" }
            ]
        },
        multipart:true,//爲true時將以multipart/form-data的形式來上傳文件,爲false時則以二進制的格式來上傳文件
        multipart_params: {}, //文件上傳附加參數 
        file_data_name: "upimg", //文件上傳的名稱 
        multi_selection: false, //true:ctrl多文件上傳, false 單文件上傳 
        init: {
            FilesAdded: function(up, files) { //文件上傳前 
                //一個文件被添加了
                //uploader爲當前實例對象,files數組,上傳隊列裏的文件對象
                alert("add");
            },
            UploadProgress: function(up, file) { //上傳中,顯示進度條 
                //從這裏咱們能夠動態獲得控制前端的進度條顯示   
                //file.percent爲當前的進度
                //file.loaded爲已經上傳的大小
                //file.size爲文件的總大小
            },
            FileUploaded: function(up, file, info) { //文件上傳成功的時候觸發        
                alert("success");
            },
            Error: function(up, err) { //上傳出錯的時候觸發 
                console.log(err.message);
                alert("error");
            }
        }
    });
    uploader.init();
    
    ///開始上傳。
    function fnUploadFile2() {
        uploader.start();
    }
</script>
</html>

 可綁定各類事件,並在事件監聽函數中作你想作的事jquery

uploader.init();
//上傳以前綁定事件中從新定義url,傳值文件id
uploader.bind('BeforeUpload',function(uploader,files){
    uploader.settings.url='${ctx}/organization/topic/pluploadFile?topicId=${topicId}&fileId='+files.id;//遠程上傳地址
});

 

.javaios

package lee.files.controller;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Controller
@RequestMapping("/fileUpload")
public class uploadController {
    private static final int BUFFER_SIZE = 100*1024;
    
    /**
     * plupload上傳文件
     * @param name 文件名
     * @param chunks    文件塊數
     * @param chunk        當前塊
     * @param request    
     * @return
     * @throws IllegalStateException
     * @throws IOException
     * 
     * @RequestParam String name,
            @RequestParam(required = false, defaultValue = "-1") int chunks,
            @RequestParam(required = false, defaultValue = "-1") int chunk,
            HttpServletRequest request,String topicId
     */
    @ResponseBody
    @RequestMapping(value="/pluploadFile",method=RequestMethod.POST)
    public String pluploadFile(@RequestParam(value="uploadFile",required = false) MultipartFile uploadFile, HttpServletRequest request){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String uploadTime = simpleDateFormat.format(date);
        
        //初始化通用multipart解析器  
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        //判斷請求中是否有文件上傳  
        if (!multipartResolver.isMultipart(request)) {  
            //請求爲空,直接返回  
            return null;  
        }
        
        try {
            Integer chunk = 0, chunks = 0;
            if(null != request.getParameter("chunk") && !request.getParameter("chunk").equals("")){
                chunk = Integer.valueOf(request.getParameter("chunk"));
            }
            if(null != request.getParameter("chunks") && !request.getParameter("chunks").equals("")){
                chunks = Integer.valueOf(request.getParameter("chunks"));
            }
            String fileName = request.getParameter("name");
            //解析請求,將文件信息放到迭代器裏     
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
            Iterator<String> iter = multiRequest.getFileNames();  
            //取得上傳文件    
            uploadFile = multiRequest.getFile(iter.next());  
            String path = buildTopicFilePath1(request);
            File saveFilePath = new File(path);
            if (!saveFilePath.exists()) {
                saveFilePath.mkdirs();
            }
            //目標文件 
            File saveFile = new File(path,fileName);
            /*//文件已存在刪除舊文件(上傳了同名的文件) 
            if (chunk == 0 && saveFile.exists()) {  
                saveFile.delete();  
                saveFile = new File(saveFilePath, fileName);
            }*/
            //合成文件
            appendFile(uploadFile.getInputStream(), saveFile);  
            if (chunk.equals(chunks-1)) {
                System.out.println("上傳完成");
                
            }else {
                System.out.println("還剩["+(chunks-1-chunk)+"]個塊文件");
            }
        }catch (Exception e) {
        }
        
        return "";
    }
    
    /**
     * 合成分塊文件
     * @param in
     * @param saveFile
     */
    private void appendFile(InputStream in, File saveFile) {
        OutputStream out = null;
        try {
            // plupload 配置了chunk的時候新上傳的文件append到文件末尾
            if (saveFile.exists()) {
                out = new BufferedOutputStream(new FileOutputStream(saveFile, true), BUFFER_SIZE);
            } else {
                out = new BufferedOutputStream(new FileOutputStream(saveFile),BUFFER_SIZE);
            }
            in = new BufferedInputStream(in, BUFFER_SIZE);
            
            int len = 0;
            byte[] buffer = new byte[BUFFER_SIZE];         
            while ((len = in.read(buffer)) > 0) {
                out.write(buffer, 0, len);
            }
        } catch (Exception e) {
        } finally {    
            try {
                in.close();
                out.flush();
                out.close();
            } catch (IOException e) {
            }
        }
    }
    
    private String buildTopicFilePath1(HttpServletRequest request) {
        
        String cp = request.getContextPath().replace("/", "");
        String path = request.getSession().getServletContext().getRealPath("").replace("\\"+cp, "");
        
        String path_head = path+"/uploadfiles";

        StringBuilder sb = new StringBuilder();
        sb.append(path_head);

        return sb.toString();
    }
}

 

plupload介紹

1、配置參數git

實例化一個plupload對象時,也就是 new plupload.Uploader(),須要傳入一個對象做爲配置參數。後面內容中出現的plupload實例均是指new plupload.Uploader()獲得的實例對象github

屬性 類型 默認值 描述
browse_button String / DOM   觸發文件選擇對話框的DOM元素,當點擊該元素後便後彈出文件選擇對話框。該值能夠是DOM元素對象自己,也能夠是該DOM元素的id
url String   服務器端接收和處理上傳文件的腳本地址,能夠是相對路徑(相對於當前調用Plupload的文檔),也能夠是絕對路徑
filters Object { } 可使用該參數來限制上傳文件的類型,大小等,該參數以對象的形式傳入,它包括三個屬性:

mime_types:用來限定上傳文件的類型,爲一個數組,該數組的每一個元素又是一個對象,該對象有title和extensions兩個屬性,title爲該過濾器的名稱,extensions爲文件擴展名,有多個時用逗號隔開。該屬性默認爲一個空數組,即不作限制。

max_file_size:用來限定上傳文件的大小,若是文件體積超過了該值,則不能被選取。值能夠爲一個數字,單位爲b,也能夠是一個字符串,由數字和單位組成,如'200kb'

prevent_duplicates:是否容許選取重複的文件,爲true時表示不容許,爲false時表示容許,默認爲false。若是兩個文件的文件名和大小都相同,則會被認爲是重複的文件

filters完整的配置示例以下(固然也能夠只配置其中的某一項):

filters: {
  mime_types : [ //只容許上傳圖片和zip文件
    { title : "Image files", extensions : "jpg,gif,png" }, 
    { title : "Zip files", extensions : "zip" }
  ],
  max_file_size : '400kb', //最大隻能上傳400kb的文件
  prevent_duplicates : true //不容許選取重複文件
}
					
headers Object   設置上傳時的自定義頭信息,以鍵/值對的形式傳入,鍵表明頭信息屬性名,鍵表明屬性值。html4上傳方式不支持設置該屬性。
multipart Boolean true true時將以multipart/form-data的形式來上傳文件,爲false時則以二進制的格式來上傳文件。html4上傳方式不支持以二進制格式來上傳文件,在flash上傳方式中,二進制上傳也有點問題。而且二進制格式上傳還須要在服務器端作特殊的處理。通常咱們用multipart/form-data的形式來上傳文件就足夠了。
multipart_params Object   上傳時的附加參數,以鍵/值對的形式傳入,服務器端但是使用$_POST來獲取這些參數(以php爲例)。好比:
multipart_params: {
  one: '1',
  two: '2',
  three: { //值還能夠是一個字面量對象
    a: '4',
    b: '5'
  },
  four: ['6', '7', '8']  //也能夠是一個數組
}
					
max_retries Number 0 當發生plupload.HTTP_ERROR錯誤時的重試次數,爲0時表示不重試
chunk_size Number/String 0 分片上傳文件時,每片文件被切割成的大小,爲數字時單位爲字節。也可使用一個帶單位的字符串,如"200kb"。當該值爲0時表示不使用分片上傳功能
resize Object   可使用該參數對將要上傳的圖片進行壓縮,該參數是一個對象,裏面包括5個屬性:

width:指定壓縮後圖片的寬度,若是沒有設置該屬性則默認爲原始圖片的寬度

height:指定壓縮後圖片的高度,若是沒有設置該屬性則默認爲原始圖片的高度

crop:

quality:壓縮後圖片的質量,只對jpg格式的圖片有效,默認爲90。quality能夠跟widthheight一塊兒使用,但也能夠單獨使用,單獨使用時,壓縮後圖片的寬高不會變化,但因爲質量下降了,因此體積也會變小

preserve_headers:壓縮後是否保留圖片的元數據,true爲保留,false爲不保留,默認爲true。刪除圖片的元數據能使圖片的體積減少一點點

resize參數的配置示例以下:

resize: {
  width: 100,
  height: 100,
  crop: true,
  quality: 60,
  preserve_headers: false
}
					
drop_element DOM/String/Array   指定了使用拖拽方式來選擇上傳文件時的拖拽區域,便可以把文件拖拽到這個區域的方式來選擇文件。該參數的值能夠爲一個DOM元素的id,也但是DOM元素自己,還能夠是一個包括多個DOM元素的數組。若是不設置該參數則拖拽上傳功能不可用。目前只有html5上傳方式才支持拖拽上傳。
multi_selection Boolean true 是否能夠在文件瀏覽對話框中選擇多個文件,true爲能夠,false爲不能夠。默認true,便可以選擇多個文件。須要注意的是,在某些不支持多選文件的環境中,默認值是false。好比在ios7的safari瀏覽器中,因爲存在bug,形成不能多選文件。固然,在html4上傳方式中,也是沒法多選文件的。
required_features Mix   可使用該參數來設置你必須須要的一些功能特徵,Plupload會根據你的設置來選擇合適的上傳方式。由於,不一樣的上傳方式,支持的功能是不一樣的,好比拖拽上傳只有html5上傳方式支持,圖片壓縮則只有html5,flash,silverlight上傳方式支持。該參數的值是一個混合類型,能夠是一個以逗號分隔的字符串,
unique_names Boolean false 當值爲true時會爲每一個上傳的文件生成一個惟一的文件名,並做爲額外的參數post到服務器端,參數明爲name,值爲生成的文件名。
runtimes String html5,flash,
silverlight,
html4
用來指定上傳方式,指定多個上傳方式請使用逗號隔開。通常狀況下,你不須要配置該參數,由於Plupload默認會根據你的其餘的參數配置來選擇最合適的上傳方式。若是沒有特殊要求的話,Plupload會首先選擇html5上傳方式,若是瀏覽器不支持html5,則會使用flash或silverlight,若是前面二者也都不支持,則會使用最傳統的html4上傳方式。若是你想指定使用某個上傳方式,或改變上傳方式的優先順序,則你能夠配置該參數。
file_data_name String file 指定文件上傳時文件域的名稱,默認爲file,例如在php中你可使用$_FILES['file']來獲取上傳的文件信息
container DOM/String   用來指定Plupload所建立的html結構的父容器,默認爲前面指定的browse_button的父元素。該參數的值能夠是一個元素的id,也能夠是DOM元素自己。
flash_swf_url String js/Moxie.swf flash上傳組件的url地址,若是是相對路徑,則相對的是調用Plupload的html文檔。當使用flash上傳方式會用到該參數。
silverlight_xap_url String js/Moxie.xap silverlight上傳組件的url地址,若是是相對路徑,則相對的是調用Plupload的html文檔。當使用silverlight上傳方式會用到該參數。

2、各類事件說明

要了解plupload的運行情況,靠的就是在這些事件了

Init
當Plupload初始化完成後觸發

監聽函數參數:(uploader)

uploader爲當前的plupload實例對象

PostInit
當Init事件發生後觸發

監聽函數參數:(uploader)

uploader爲當前的plupload實例對象

OptionChanged
當使用Plupload實例的setOption()方法改變當前配置參數後觸發

監聽函數參數:(uploader,option_name,new_value,old_value)

uploader爲當前的plupload實例對象,option_name爲發生改變的參數名稱,new_value爲改變後的值,old_value爲改變前的值

Refresh
當調用plupload實例的refresh()方法後會觸發該事件,暫時不清楚還有什麼其餘動做會觸發該事件,但據我測試,把文件添加到上傳隊列後也會觸發該事件。

監聽函數參數:(uploader)

uploader爲當前的plupload實例對象

StateChanged
當上傳隊列的狀態發生改變時觸發

監聽函數參數:(uploader)

uploader爲當前的plupload實例對象

UploadFile
當上傳隊列中某一個文件開始上傳後觸發

監聽函數參數:(uploader,file)

uploader爲當前的plupload實例對象,file爲觸發此事件的文件對象

BeforeUpload
當隊列中的某一個文件正要開始上傳前觸發

監聽函數參數:(uploader,file)

uploader爲當前的plupload實例對象,file爲觸發此事件的文件對象

QueueChanged
當上傳隊列發生變化後觸發,即上傳隊列新增了文件或移除了文件。QueueChanged事件會比FilesAdded或FilesRemoved事件先觸發

監聽函數參數:(uploader)

uploader爲當前的plupload實例對象

UploadProgress
會在文件上傳過程當中不斷觸發,能夠用此事件來顯示上傳進度

監聽函數參數:(uploader,file)

uploader爲當前的plupload實例對象,file爲觸發此事件的文件對象

FilesRemoved
當文件從上傳隊列移除後觸發

監聽函數參數:(uploader,files)

uploader爲當前的plupload實例對象,files爲一個數組,裏面的元素爲本次事件所移除的文件對象

FileFiltered
暫不清楚該事件的意義,但根據測試得出,該事件會在每個文件被添加到上傳隊列前觸發

監聽函數參數:(uploader,file)

uploader爲當前的plupload實例對象,file爲觸發此事件的文件對象

FilesAdded
當文件添加到上傳隊列後觸發

監聽函數參數:(uploader,files)

uploader爲當前的plupload實例對象,files爲一個數組,裏面的元素爲本次添加到上傳隊列裏的文件對象

FileUploaded
當隊列中的某一個文件上傳完成後觸發

監聽函數參數:(uploader,file,responseObject)

uploader爲當前的plupload實例對象,file爲觸發此事件的文件對象,responseObject爲服務器返回的信息對象,它有如下3個屬性:

response:服務器返回的文本

responseHeaders:服務器返回的頭信息

status:服務器返回的http狀態碼,好比200

ChunkUploaded
當使用文件小片上傳功能時,每個小片上傳完成後觸發

監聽函數參數:(uploader,file,responseObject)

uploader爲當前的plupload實例對象,file爲觸發此事件的文件對象,responseObject爲服務器返回的信息對象,它有如下5個屬性:

offset:該文件小片在總體文件中的偏移量

response:服務器返回的文本

responseHeaders:服務器返回的頭信息

status:服務器返回的http狀態碼,好比200

total:該文件(指的是被切割成了許多文件小片的那個文件)的總大小,單位爲字節

UploadComplete
當上傳隊列中全部文件都上傳完成後觸發

監聽函數參數:(uploader,files)

uploader爲當前的plupload實例對象,files爲一個數組,裏面的元素爲本次已完成上傳的全部文件對象

Error
當發生觸發時觸發

監聽函數參數:(uploader,errObject)

uploader爲當前的plupload實例對象,errObject爲錯誤對象,它至少包含如下3個屬性(由於不一樣類型的錯誤,屬性可能會不一樣):

code:錯誤代碼,具體請參考plupload上定義的表示錯誤代碼的常量屬性

file:與該錯誤相關的文件對象

message:錯誤信息

Destroy
當調用destroy方法時觸發

監聽函數參數:(uploader)

uploader爲當前的plupload實例對象

3、Plupload實例的屬性

屬性 描述
id Plupload實例的惟一標識id
state 當前的上傳狀態,可能的值爲plupload.STARTEDplupload.STOPPED,該值由Plupload實例的stop()statr()方法控制。默認爲plupload.STOPPED
runtime 當前使用的上傳方式
files 當前的上傳隊列,是一個由上傳隊列中的文件對象組成的數組
settings 當前的配置參數對象
total 表示整體進度信息的QueueProgress對象

4、Plupload實例的方法

方法 描述
init() 初始化Plupload實例
setOption(option, [value]) 設置某個特定的配置參數,option爲參數名稱,value爲要設置的參數值。option也能夠爲一個由參數名和參數值鍵/值對組成的對象,這樣就能夠一次設定多個參數,此時該方法的第二個參數value會被忽略。
getOption([option]) 獲取當前的配置參數,參數option爲須要獲取的配置參數名稱,若是沒有指定option,則會獲取全部的配置參數
refresh() 刷新當前的plupload實例,暫時還不明白何時須要使用
start() 開始上傳隊列中的文件
stop() 中止隊列中的文件上傳
disableBrowse(disable) 禁用或啓用plupload的文件瀏覽按鈕,參數disabletrue時爲禁用,爲false時爲啓用。默認爲true
getFile(id) 經過id來獲取文件對象
addFile(file, [fileName]) 向上傳隊列中添加文件,若是成功添加了文件,會觸發FilesAdded事件。參數file爲要添加的文件,能夠是一個原生的文件,或者一個plupload文件對象,或者一個input[type="file"]元素,還能夠是一個包括前面那幾種東西的數組;fileName爲給該文件指定的名稱
removeFile(file) 從上傳隊列中移除文件,參數file爲plupload文件對象或先前指定的文件名稱
splice(start, length) 從上傳隊列中移除一部分文件,start爲開始移除文件在隊列中的索引,length爲要移除的文件的數量,該方法的返回值爲被移除的文件。該方法會觸發FilesRemoved QueueChanged事件
trigger(name, Multiple) 觸發某個事件。name爲要觸發的事件名稱,Multiple爲傳給該事件監聽函數的參數,是一個對象
hasEventListener(name) 用來判斷某個事件是否有監聽函數,name爲事件名稱
bind(name, func, scope) 給某個事件綁定監聽函數,name爲事件名,func爲監聽函數,scope爲監聽函數的做用域,也就是監聽函數中this的指向
unbind(name, func) 移除事件的監聽函數,name爲事件名稱,func爲要移除的監聽函數
unbindAll() 移除全部事件的全部監聽函數
destroy() 銷燬plupload實例

5、文件對象的屬性和方法

在不少事件監聽函數中,都會提供文件對象給你

屬性/方法 描述
id 文件id
name 文件名,例如"myfile.gif"
type 文件類型,例如"image/jpeg"
size 文件大小,單位爲字節,當啓用了客戶端壓縮功能後,該值可能會改變
origSize 文件的原始大小,單位爲字節
loaded 文件已上傳部分的大小,單位爲字節
percent 文件已上傳部分所佔的百分比,如50就表明已上傳了50%
status 文件的狀態,可能爲如下幾個值之一:plupload.QUEUEDplupload.UPLOADINGplupload.FAILEDplupload.DONE
lastModifiedDate 文件最後修改的時間
getNative() 獲取原生的文件對象
getSource() 獲取mOxie.File 對象,想了解mOxie是什麼東西,能夠看下https://github.com/moxiecode/moxie/wiki/API
destroy() 銷燬文件對象

6、QueueProgress 對象的屬性

plupload實例的total屬性是一個QueueProgress對象

屬性 描述
size 上傳隊列中全部文件加起來的總大小,單位爲字節
loaded 隊列中當前已上傳文件加起來的總大小,單位爲字節
uploaded 已完成上傳的文件的數量
failed 上傳失敗的文件數量
queued 隊列中剩下的(也就是除開已經完成上傳的文件)須要上傳的文件數量
percent 整個隊列的已上傳百分比,如50就表明50%
bytesPerSec 上傳速率,單位爲 byte/s,也就是 字節/秒

7、plupload命名空間上的一些屬性

plupload的命名空間上有一些屬性,用來表示一些常量。記住,不是plupload實例的屬性,而是plupload的屬性

屬性名稱 描述
VERSION 當前plupload的版本號
STOPPED 值爲1,表明上傳隊列還未開始上傳或者上傳隊列中的文件已經上傳完畢時plupload實例的state屬性值
STARTED 值爲2,表明隊列中的文件正在上傳時plupload實例的state屬性值
QUEUED 值爲1,表明某個文件已經被添加進隊列等待上傳時該文件對象的status屬性值
UPLOADING 值爲2,表明某個文件正在上傳時該文件對象的status屬性值
FAILED 值爲4,表明某個文件上傳失敗後該文件對象的status屬性值
DONE 值爲5,表明某個文件上傳成功後該文件對象的status屬性值
GENERIC_ERROR 值爲-100,發生通用錯誤時的錯誤代碼
HTTP_ERROR 值爲-200,發生http網絡錯誤時的錯誤代碼,例如服務氣端返回的狀態碼不是200
IO_ERROR 值爲-300,發生磁盤讀寫錯誤時的錯誤代碼,例如本地上某個文件不可讀
SECURITY_ERROR 值爲-400,發生由於安全問題而產生的錯誤時的錯誤代碼
INIT_ERROR 值爲-500,初始化時發生錯誤的錯誤代碼
FILE_SIZE_ERROR 值爲-600,當選擇的文件太大時的錯誤代碼
FILE_EXTENSION_ERROR 值爲-601,當選擇的文件類型不符合要求時的錯誤代碼
FILE_DUPLICATE_ERROR 值爲-602,當選取了重複的文件而配置中又不容許有重複文件時的錯誤代碼
IMAGE_FORMAT_ERROR 值爲-700,發生圖片格式錯誤時的錯誤代碼
IMAGE_MEMORY_ERROR 當發生內存錯誤時的錯誤代碼
IMAGE_DIMENSIONS_ERROR 值爲-702,當文件大小超過了plupload所能處理的最大值時的錯誤代碼
相關文章
相關標籤/搜索