c#.Netマルチファイルアップロードと自動圧縮画像
5148 ワード
必要:
プロジェクトには添付ファイルをアップロードする必要があります.タイプはpdf、word、excel、画像などで、アップロードしたファイルに画像があれば自動的に圧縮する必要があります.
ソリューション:
Web側でcanvasを使用して画像を小さなフォーマットに圧縮します.
開発中に多くの難点に遭遇し、コードを貼って参考にします.jsコード:
サービス側のコードには難点はありません.書かなければダウンロードできます.
難点:
同時に複数のファイルをアップロードしたとき、最後のアップロードしか成功しなかったことに気づき、私は直接thisを使用しました.filesはループアップロードして、テストして午後この行のコードが比較的に肝心であることを発見して、var files=Array.prototype.slice.call(this.files); これに変更すると、複数のファイルが正常にアップロードされます.
すべてのソースコードはダウンロードすることができます:同時に複数のファイルをアップロードして、ピクチャーは自動的に圧縮します
プロジェクトには添付ファイルをアップロードする必要があります.タイプは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); これに変更すると、複数のファイルが正常にアップロードされます.
すべてのソースコードはダウンロードすることができます:同時に複数のファイルをアップロードして、ピクチャーは自動的に圧縮します