将 Dropzone 文件对象转换为 base64 字符串
converting Dropzone File object to base64 string
我正在尝试使用 JSON 发送 Dropzone 文件,所以我想将图像解码为 base64
我试过这个功能:
function getBase64Image(imgElem) {
var canvas = document.createElement("canvas");
canvas.width = imgElem.clientWidth;
canvas.height = imgElem.clientHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(imgElem, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
现在对于 Dropzone 我写这个是为了测试 base64 转换器
$("form#dropzone").dropzone({
url: allPaths.baseUrl + 'Services/PictureUpload.asmx/HandleFileDropped',
uploadMultiple: true,
autoProcessQueue: false,
acceptedFiles: "image/*",
init: function() {
this.on("addedfile", function(file) {
console.log(getBase64Image(file));
});
}
});
我收到文件对象无效的错误
我发现 file.DATAURL 已经有了 base64(不需要上述功能)所以我将 post 我的解决方案在这里:
$("form#dropzone").dropzone({
url: allPaths.baseUrl + 'Services/PictureUpload.asmx/HandleFileDropped',
uploadMultiple: true,
autoProcessQueue: false,
acceptedFiles: "image/*",
init: function() {
this.on("addedfile", function (file) {
var reader = new FileReader();
reader.onload = function(event) {
// event.target.result contains base64 encoded image
var base64String = event.target.result;
var fileName = file.name
handlePictureDropUpload(base64String ,fileName );
};
reader.readAsDataURL(file);
});
}
});
我使用了不同的方法,因为我在 Ajax 中保存了一个 json 对象。
首先,我声明了一个全局数组。
images = [];
我像这样访问了我的拖放区中的文件,并将它们推送到我的阵列图像中。
for (var i = 0; i < $animalImage.files.length; i++) {
images.push($animalImage.files[i]);
}
其次,我将该数组添加到我的 json 对象(动物)中,用我在模型中期望的信息映射它们(asp.net C#)
animal.Pictures = $.map(images, function (img) {
return {
base64: img.dataURL.replace(/^data:image\/[a-z]+;base64,/, ""),
fileName: img.name,
type: img.type
};
});
如您所见,我映射了 base64,即我从图像中获得的信息。
希望对您有所帮助。
我正在尝试使用 JSON 发送 Dropzone 文件,所以我想将图像解码为 base64 我试过这个功能:
function getBase64Image(imgElem) {
var canvas = document.createElement("canvas");
canvas.width = imgElem.clientWidth;
canvas.height = imgElem.clientHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(imgElem, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
现在对于 Dropzone 我写这个是为了测试 base64 转换器
$("form#dropzone").dropzone({
url: allPaths.baseUrl + 'Services/PictureUpload.asmx/HandleFileDropped',
uploadMultiple: true,
autoProcessQueue: false,
acceptedFiles: "image/*",
init: function() {
this.on("addedfile", function(file) {
console.log(getBase64Image(file));
});
}
});
我收到文件对象无效的错误
我发现 file.DATAURL 已经有了 base64(不需要上述功能)所以我将 post 我的解决方案在这里:
$("form#dropzone").dropzone({
url: allPaths.baseUrl + 'Services/PictureUpload.asmx/HandleFileDropped',
uploadMultiple: true,
autoProcessQueue: false,
acceptedFiles: "image/*",
init: function() {
this.on("addedfile", function (file) {
var reader = new FileReader();
reader.onload = function(event) {
// event.target.result contains base64 encoded image
var base64String = event.target.result;
var fileName = file.name
handlePictureDropUpload(base64String ,fileName );
};
reader.readAsDataURL(file);
});
}
});
我使用了不同的方法,因为我在 Ajax 中保存了一个 json 对象。
首先,我声明了一个全局数组。
images = [];
我像这样访问了我的拖放区中的文件,并将它们推送到我的阵列图像中。
for (var i = 0; i < $animalImage.files.length; i++) {
images.push($animalImage.files[i]);
}
其次,我将该数组添加到我的 json 对象(动物)中,用我在模型中期望的信息映射它们(asp.net C#)
animal.Pictures = $.map(images, function (img) {
return {
base64: img.dataURL.replace(/^data:image\/[a-z]+;base64,/, ""),
fileName: img.name,
type: img.type
};
});
如您所见,我映射了 base64,即我从图像中获得的信息。
希望对您有所帮助。