如何在asp.net中检索图像的二进制数据源

时间:2014-12-11 06:51:59

标签: c# jquery asp.net image binary-data

我希望在上传asp.net webform中的任何图像之前预览图像。我通过以下代码执行此操作。但是在单击“保存”按钮后,我想将图像上传到服务器。在我的代码隐藏中,我得到<img>的src =“”。我该怎么做才能恢复二进制数据以保存我的文件。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="jquery-1.10.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function showMyImage(fileInput) {
        var files = fileInput.files;
        for (var i = 0; i < files.length; i++) {
            var file = files[i];
            var imageType = /image.*/;
            if (!file.type.match(imageType)) {
                continue;
            }
            var link = $(fileInput).siblings('.thumb').attr('src');
            alert(link);
            var img = document.getElementById("thumbnil");
            img.file = file;
            var reader = new FileReader();
            reader.onload = (function (aImg) {
                return function (e) {
                    aImg.src = e.target.result;
                };
            })(img);
            reader.readAsDataURL(file);
        }
    }
</script>
</head>
<body>
<form id="form1" runat="server">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager>
    <asp:UpdatePanel runat="server">
        <ContentTemplate>
            <input type="file" accept="image/*" onchange="showMyImage(this)" />
            <br />
            <img id="thumbnil" class="thumb" style="width: 20%; margin-top: 10px;" src="" alt="image" runat="server"/>
            <asp:Button runat="server" Text="Save" OnClick="Unnamed_Click"/>
        </ContentTemplate>
    </asp:UpdatePanel>

</form>

提前致谢..

1 个答案:

答案 0 :(得分:1)

###完整的答案###

选项1:

不读取img-tag src-attribute,客户端无法在服务器端更新它,它不会&#34; post-back&#34;。使用像这样的输入字段

<form...>
    ...
    <input class="image-data" type="hidden" id="imageString" runat="server" />
    ...
</form>

并在Js-Code中添加此dataurl作为此字段的值。

 ...
 reader.onload = (function (aImg) {
     return function (e) {
     aImg.src = e.target.result;
     //... add this, it's searches for the input-field, to be able to post the String to the Server
     $(".image-data").val(e.target.result);
 };
 ...

<强>更新

在服务器上,您可以像这样阅读数据。

 string imageData = imageString.Value;

选项2:

你也可以这样做:

更改您的asp.net文件

<!-- add enctype=...  -->
<form id="form1" runat="server" enctype="multipart/form-data">
    ... 
    <!-- add name=... -->
    <input type="file" accept="image/*" onchange="showMyImage(this)" name="uploadImage" />
    ...
Codebehind中的

HttpPostedFile imageFile= Request.Files["uploadImage"];

if (imageFile && imageFile.ContentLength > 0)
{
   // ... Use the imageFile variable as you please
}

选项取决于您要对数据执行的操作。