c#.Netマルチファイルアップロードと自動圧縮画像


必要:
プロジェクトには添付ファイルをアップロードする必要があります.タイプはpdf、word、excel、画像などで、アップロードしたファイルに画像があれば自動的に圧縮する必要があります.
ソリューション:
Web側でcanvasを使用して画像を小さなフォーマットに圧縮します.
開発中に多くの難点に遭遇し、コードを貼って参考にします.jsコード:

 /*
    :      ,  jquery(            )
    :2019-01-25
    :gaobin
  */
var ud_upload = {
    paras: {
        btn: "",//       id
        fileName: "AttachmentFile",//  file   
        uploadPath: "",//    
        accept: "image/*",//   "image/*",    :*/*  
        isMultiple: true,//        
        data: function () {
            return {};
        },
        complete: function () { }
    },

    upload: function (file, name) {
        console.log("  ");
        var _this = this;
        //         
        var formData = new FormData();
        //        form 
        formData.append("AttachmentFile", file);
        if (typeof file === "string") {
            formData.append("AttachmentFileTitle", name);
        }
        var _data = _this.paras.data();
        // form       
        for (var key in _data) {
            formData.append(key, _data[key]);
        }
        $.ajax({
            url: _this.paras.uploadPath,
            type: 'POST',
            dataType: "JSON",
            data: formData,
            processData: false,  //tell jQuery not to process the data
            contentType: false,  //tell jQuery not to set contentType
            async: false,
            cache: false,
            success: function (res) {
                _this.paras.complete(res);

                //filesArr.count--;
                //delete filesArr.arr[0];
            }
        });

        // }
    },
    filesArr: { count: 0, arr: [] },
    callback: function callback(img, file) {
        //       img          

        //    img
        var data = compress(img, {});
        img = null;
        this.uploadImg(data, file.name);
    },
    init: function (paras) {
        //     
        //top.loading();
        var _this = this;


        //    
        var _p = $.extend({}, _this.paras, paras);
        _this.paras = _p;

        $("#" + paras.btn).bind("click", function () {

            //    ,  id    ,     
            $("#" + paras.fileName + _p.btn).click();
        });

        var _temp_form = $("

サービス側のコードには難点はありません.書かなければダウンロードできます.
難点:
同時に複数のファイルをアップロードしたとき、最後のアップロードしか成功しなかったことに気づき、私は直接thisを使用しました.filesはループアップロードして、テストして午後この行のコードが比較的に肝心であることを発見して、var files=Array.prototype.slice.call(this.files); これに変更すると、複数のファイルが正常にアップロードされます.
すべてのソースコードはダウンロードすることができます:同時に複数のファイルをアップロードして、ピクチャーは自動的に圧縮します