【问题标题】:Upload base64 image to .NET webservice and convert it there将 base64 图像上传到 .NET 网络服务并在那里转换
【发布时间】:2016-07-22 14:10:46
【问题描述】:

我有一个函数通过data:JSON.stringify(formdata)使用 POST 将数据发送到删除 .NET 网络服务。到目前为止,我没有任何问题。我想要添加另一个值到 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 中创建一个表单并像这样提交。

【问题讨论】:

    标签: javascript c# jquery base64


    【解决方案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" />
    

    【讨论】:

    • 谢谢。那是.NET代码,如何通过附加到formdata JSON的参数将数据正确传输到Web服务?
    • @IdanShechter 我回传了 e.target.result 中的值,所以我没有使用 JSON,但您应该可以使用该值
    • fileid 是什么?你分享了部分代码,所以我试着逐个理解。
    • @IdanShechter 抱歉,fileid 将是您的文件输入字段的 id。例如:
    • 谢谢,我会按照答案,这是有道理的。我会像你一样解决它。非常感谢您的时间,我的朋友。
    猜你喜欢
    • 2014-09-22
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多