gpt4 book ai didi

c# - 如何在不单击的情况下在 FileUpload Controller 中选择路径后显示图像

转载 作者:可可西里 更新时间:2023-11-01 08:53:00 26 4
gpt4 key购买 nike

最近我一直在使用 ASP.NET (c#) 开发 Web 表单应用程序:我有一个图像控件:

<asp:Image ID="Avatar" runat="server" Height="225px" ImageUrl="~/Images/NoUser.jpg" Width="225px" />

还有FileUpload & Button控件

<asp:FileUpload ID="avatarUpload" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Upload" />

当用户点击按钮时,“上传”代码被执行(图像被发送到数据库)。问题是我喜欢在用户单击“绝望”按钮之前显示用户在头像图像 Controller 中选择的图像。

是否可以自动执行此操作?

最佳答案

借助 HTML5 (Example: Using files from web applications) 的 File Api,您可以轻松完成此操作。更改标记以使用 input type="file" 而不是 asp:FileUpload 并添加 ID,添加标签 runat="server" 来制作它可以从服务器访问。您的标记应如下所示:

<input ID="avatarUpload" type="file" name="file" onchange="previewFile()"  runat="server" />
<%--<asp:FileUpload ID="avatarUpload" runat="server" />--%>
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Upload" />
<asp:Image ID="Avatar" runat="server" Height="225px" ImageUrl="~/Images/NoUser.jpg" Width="225px" />

现在在文档的头部添加一个javascript函数previewFile:

<head runat="server">
<title></title>
<script type="text/javascript">
function previewFile() {
var preview = document.querySelector('#<%=Avatar.ClientID %>');
var file = document.querySelector('#<%=avatarUpload.ClientID %>').files[0];
var reader = new FileReader();

reader.onloadend = function () {
preview.src = reader.result;
}

if (file) {
reader.readAsDataURL(file);
} else {
preview.src = "";
}
}
</script>
</head>

现在选择图像后,您可以看到如下所示的预览: enter image description here

您可以使用 css 将其调整为缩略图。单击上传按钮后,您可以在代码中找到发布的文件:

protected void Upload(object sender, EventArgs e)
{
int contentLength = avatarUpload.PostedFile.ContentLength;//You may need it for validation
string contentType = avatarUpload.PostedFile.ContentType;//You may need it for validation
string fileName = avatarUpload.PostedFile.FileName;
avatarUpload.PostedFile.SaveAs(@"c:\test.tmp");//Or code to save in the DataBase.
}

关于c# - 如何在不单击的情况下在 FileUpload Controller 中选择路径后显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com