我有一个函数,通过data:JSON.stringify(formdata)
使用POST将数据发送到删除.NET Web服务。到目前为止我没有问题。我想要添加的内容还为formdata JSON添加另一个值,该值将保存base64图像数据并将其发送到服务器,然后我将其转换回JPEG图像。
我怎么能这样?我已经有一个创建预览的预览功能,但也创建了一个base64图像:
function previewFile() {
var preview = document.querySelector('.uploadimage');
var file = document.querySelector('input[type=file]').files[0];
var reader = new FileReader();
reader.addEventListener("load", function () {
preview.src = reader.result;
}, false);
if (file) {
reader.readAsDataURL(file);
}
}
我看到很多人质疑如何将图片上传到服务器。我希望保持当前配置,但只是将base64图像数据作为字符串传递给服务器。我看到许多开发人员正在努力解决这个问题,他们中的大多数都只是在javascript中创建一个表单并提交这样的表单。
答案 0 :(得分:1)
这是我最近这样做的方式:
string base64 = base64string.Substring(base64string.IndexOf(',') + 1);
byte[] imageData = Convert.FromBase64String(base64);
Image img;
using (var ms = new MemoryStream(imageData, 0, imageData.Length)) {
img = Image.FromStream(ms, true);
您将需要:
using System.Drawing;
要简单地转换为jpg,请使用:
File.WriteAllBytes("image.jpeg", Convert.FromBase64String(base64));
为了发送数据,我使用以下JS:
function sendImage() {
if (this.files && this.files[0]) {
var FR = new FileReader();
FR.onload = function (e) {
$("#imgImage").attr("src", e.target.result); //show a preview
//send e.target.result as a string to your webservice
};
FR.readAsDataURL(this.files[0]);
}
}
我使用此事件来收听上传的文件:
document.getElementById("fileid").addEventListener("change", sendImage, false);
前端:
<input type="file" id="fileid" />