FormData传输文件

function uploadfile() {
            var inputThis = $(this);
            var thisOrderId = inputThis.parent().attr("data-detailId");
            var fileObj = this.files[0];
            inputThis.parent().children('.fileName').html(fileObj.name);

            var fileUrl;
            var FileController = "http://easyprint.cdn.tronsis.com/open-cdn/ssl/data/write";
            var form = new FormData();
            form.append("token", userData.cdnToken);
            form.append("secure", "false");
            form.append("file", fileObj);
            form.append("filename", fileObj.name);
            $.ajax({
                type: "post",
                url: FileController,
                data: form,
                processData: false,
                contentType: false,
                    xhr: function() {      
                    var xhr = $.ajaxSettings.xhr();      
                    if (onprogress && xhr.upload) {        
                        xhr.upload.addEventListener("progress", onprogress, false);        
                        return xhr;      
                    }    
                },
                success: function(data) {
                    data = JSON.parse(data);
                    if (data.header.status == 200) {
                        easyprint.updateDesignFile({
                            token: userData.token,
                            fileUrl: data.data.url,
                            fileName: data.data.filename,
                            itemId: thisOrderId
                        }, function(data) {
                            if ($(".choODtype.active").hasClass('OrderAll')) {
                                allOrder();
                            } else if ($(".choODtype.active").hasClass('pendding')) {
                                penddingOrder();
                            } else {
                                paidOrder();
                            }
                        });
                    } else if (data.header.status == 501) {
                        easyprint.getCdnToken({
                            token: userData.token,
                        }, function(data) {
                            userData.cdnToken = data.response;
                            var form = new FormData();
                            form.append("token", userData.cdnToken);
                            form.append("secure", "false");
                            form.append("file", fileObj);
                            $.ajax({
                                type: "post",
                                url: FileController,
                                data: form,
                                processData: false,
                                contentType: false,
                                    xhr: function() {      
                                    var xhr = $.ajaxSettings.xhr();      
                                    if (onprogress && xhr.upload) {        
                                        xhr.upload.addEventListener("progress", onprogress, false);        
                                        return xhr;      
                                    }    
                                },
                                success: function(data) {
                                    data = JSON.parse(data);
                                    if (data.header.status == 200) {
                                        easyprint.updateDesignFile({
                                            token: userData.token,
                                            fileUrl: data.data.url,
                                            fileName: data.data.filename,
                                            itemId: thisOrderId
                                        }, function(data) {
                                            if ($(".choODtype.active").hasClass('OrderAll')) {
                                                allOrder();
                                            } else if ($(".choODtype.active").hasClass('pendding')) {
                                                penddingOrder();
                                            } else {
                                                paidOrder();
                                            }
                                        });
                                    } else if (data.header.status == 501) {
                                        alert("上传失败");
                                    }
                                }
                            })
                        })
                    }
                },
                error: function() {
                    alert("服务器异常")
                }
            })

            function onprogress(evt) {
                var loaded = evt.loaded; //已经上传大小情况
                var tot = evt.total; //附件总大小
                var per = Math.floor(100 * loaded / tot); //已经上传的百分比
                inputThis.prev(".percent").show();
                inputThis.prev(".percent").children('.son').html(per + "%");
            }
        }
原文地址:https://www.cnblogs.com/zccfun/p/6054663.html