将base64映像上传到.NET webservice并在那里进行转换

时间:2016-07-22 14:10:46

标签: javascript c# jquery base64

我有一个函数,通过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中创建一个表单并提交这样的表单。

1 个答案:

答案 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" />