使用JQuery和WebMethod保存图像

时间:2014-02-27 11:45:13

标签: c# vb.net

我正在尝试使用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

请帮我解决此问题并将图像保存到文件夹中。

1 个答案:

答案 0 :(得分:0)

您在发送之前将图像,文件名和扩展参数编码为JSON对象,但在另一端不是从JSON解码。

我相信你的saveimage函数需要三个参数,但只能得到一个,一个JSON字符串

您需要单独发送所有三个参数,或者更改saveImage函数以接受一个字符串参数并将其从JSON解码为对象。