我正在尝试使用vb.net中的JQuery和WebMethod将图像保存到文件夹中。但是当我尝试将流转换为图像时,我得到参数无效异常。
HTML
<div>
<input id="imgInput" type="file" name="file"/>
<img id="imagePreview" src="" alt="Item Image" width="96" height="80"/>
<input id="Button1" type="button" value="save image" onclick="saveimage();"/>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#imgInput").change(function () {
readURL(this);
});
});
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#imagePreview').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
function saveimage() {
var imageInByte = encodeURIComponent($('#imagePreview').attr('src'));
var fname = $("#imgInput").val();
var splitval = fname.split('.');
var fnames = Math.floor((Math.random() * 10000000) + 1);
var submitval = JSON.stringify({ data: imageInByte, fname: fnames, ext: splitval[1] });
// alert(submitval);
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
datatype: "json",
data: submitval,
url: "test.aspx/saveimage",
success: function (data) {
}
});
}
</script>
网络服务
<WebMethod()>
Public Shared Sub saveimage(ByVal data As String, ByVal fname As String, ByVal ext As String)
Dim bytearray As Byte() = Encoding.UTF32.GetBytes(data)
Dim base64str = Convert.ToBase64String(bytearray)
Dim imgarr As Byte() = Convert.FromBase64String(base64str)
Dim streams As MemoryStream = New MemoryStream(imgarr, 0, imgarr.Length)
streams.Write(imgarr, 0, imgarr.Length)
If Not streams Is Stream.Null Then
Dim retimage As Image
Try
retimage = Image.FromStream(streams, True, True)
Catch ex As Exception
End Try
End If
End Sub
请帮我解决此问题并将图像保存到文件夹中。
答案 0 :(得分:0)
您在发送之前将图像,文件名和扩展参数编码为JSON对象,但在另一端不是从JSON解码。
我相信你的saveimage
函数需要三个参数,但只能得到一个,一个JSON字符串
您需要单独发送所有三个参数,或者更改saveImage
函数以接受一个字符串参数并将其从JSON解码为对象。