Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net中检索图像的二进制数据源_C#_Jquery_Asp.net_Image_Binary Data - Fatal编程技术网

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

C# 如何在asp.net中检索图像的二进制数据源,c#,jquery,asp.net,image,binary-data,C#,Jquery,Asp.net,Image,Binary Data,我想在上载asp.net网络表单中的任何图像之前获得图像预览。我是通过以下代码来实现的。但在点击保存按钮后,我想将图像上传到服务器。在我的codebehind中,我为 函数showMyImage(文件输入){ var files=fileInput.files; 对于(var i=0;i

我想在上载asp.net网络表单中的任何图像之前获得图像预览。我是通过以下代码来实现的。但在点击保存按钮后,我想将图像上传到服务器。在我的codebehind中,我为

函数showMyImage(文件输入){
var files=fileInput.files;
对于(var i=0;i

提前谢谢

####未注明日期的完整答案###

选项1:


不要读取img标签src属性,客户端无法在服务器端更新它,并且它不会是“post-back”。使用这样的输入字段


...
...
并在Js代码中添加此dataurl作为此字段的值

。。。
reader.onload=(函数(aImg){
返回函数(e){
aImg.src=e.target.result;
//…添加此项,它将搜索输入字段,以便能够将字符串发布到服务器
$(“.image data”).val(e.target.result);
};
...
更新:

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

string imageData=imageString.Value;
选项2:

您也可以这样做:

更改asp.net文件

<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>

哪个选项取决于您想对数据做什么。

不要读取img tag src属性,客户端无法在服务器端进行更新,并且不会“发回”.使用输入字段或so@winner_joiner:那么还有其他解决方案吗?@winner\u joiner:你能解释一下
使用输入字段吗?看看下面我的anwser。val不起作用,但这给了我另一个使用hiddenfield的想法。你的意思是
val
不起作用。javascript错误?或者字段没有值,或者…?请e、 更具体一点。val不适用于图像,我的意思是val不是属性。
val()
设置在一个隐藏的输入字段
。然后在服务器上,您从该隐藏字段读取数据,而不是图像。
string imageData=imageString.Value;
很抱歉延迟回复,但我使用了asp:hidden控件。但是您建议的选项也是正确的。非常感谢您的想法。
<!-- add enctype=...  -->
<form id="form1" runat="server" enctype="multipart/form-data">
    ... 
    <!-- add name=... -->
    <input type="file" accept="image/*" onchange="showMyImage(this)" name="uploadImage" />
    ...
HttpPostedFile imageFile= Request.Files["uploadImage"];

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