2016-07-22 126 views
1

我有一个通过data:JSON.stringify(formdata)使用POST将数据发送到删除.NET web服务的功能。到目前为止,我没有任何问题。我想要添加的内容还会向form数据JSON添加另一个值,该数据将保存base64图像数据并将其发送到服务器,然后在那里将其转换回JPEG图像。将base64映像上传到.NET webservice并将其转换为

我该怎么做?我已经有创建预览的预览功能,而且还创建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

这里是最近的路我这样做:

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" /> 
+0

感谢。这是.NET代码,我如何通过附加到formdata JSON的参数将数据正确传输到webservice? –

+0

@IdanShechter请参阅编辑 –

+1

@IdanShechter我回发e.target.result中的值,所以我没有使用JSON,但您应该可以使用该值 –

相关问题