使用在asp:FileUpload控件中选择的图像填充asp:Image

本文关键字:asp 图像 Image 选择 填充 控件 FileUpload | 更新日期: 2024-07-23 04:19:42

使用asp-FileUpload控件,是否可以在FileUpload控件中选择一个图像后立即用该图像填充asp-Image,而无需将其上载到文件夹等,只需用所选图像填充asp Image控件即可。

使用在asp:FileUpload控件中选择的图像填充asp:Image

这里有一种直接在客户端实现的方法:JSFiddle

var input = document.getElementById('fileUp');
var img = document.getElementById('img1');
if (input.files && input.files[0]) {
    var reader = new FileReader();
    reader.onload = function (e) {
        img.src =  e.target.result;
    }
    reader.readAsDataURL(input.files[0]);
}

这种方法存在一些问题。

  1. Img的来源不会保存在Postback上,您可以为此创建一个变通方法,但它有点深入。

  2. 使用此功能需要支持HTML5WebFileReaderAPI它只受数量有限的浏览器支持(请参阅全文我发布的链接底部的支持列表)

如果你只需要客户端处理,并且只需要IE10/Chrome/其他支持的浏览器,那么你就可以了否则,这种方法将不适用于您

将图像二进制文件存储在会话中可能会有所帮助。

您不能直接执行,但这里有一种巧妙的方法可以在不保存到正确的目标文件夹的情况下执行。

取自http://forums.asp.net/p/962719/1197308.aspx

出于安全原因,FileUpload控件不允许您预加载文件。但是,您可以有一个临时目录(例如。预加载目录),然后再将其放入生产中directroy(例如uploadedDirectory)。在您将文件保存到temp目录,可以使用FileUploadControl.PostedFile.InputStream以将已发布文件的内容获取到字节数组中。从那里你可以做:

C#:

byte[]buff;buff=(byte[])FileUploadControl.PostedFile.InputSream;Response.ContentType=FileUploadControl.PostedFile.ContentType;Response.BinaryWrite(buff);

VB.NET暗buff作为字节()

buff=Ctype(FileUploadControl.PostedFile.InputStream,byte())Response.ContentType=FileUploadControl.PostedFile.ContentType响应.BinaryWrite(buff)。。。

这将以字节流的形式返回图像由浏览器解释(假设您具有正确的内容类型)成为您的图像,并将相应地显示