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

时间:2013-12-06 12:23:24

标签: c# asp.net

使用asp FileUpload控件,无论如何,只要我在FileUpload控件中选择一个而不将其上传到文件夹等,我就可以拥有一个填充了图像的asp Image,只需用图像填充asp Image控件地选择。

3 个答案:

答案 0 :(得分:1)

以下是在客户端直接执行此操作的方法: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.   
  3. 使用此功能需要支持HTML5 Web FileReader API。   这仅限于有限数量的浏览器(请参阅完整版   支持列表在我发布的链接底部)

  4.   

如果您只需要将其用于客户端处理,并且仅用于IE10 / Chrome /其他支持的浏览器,那么您就可以了。 否则此方法对您无效。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你不能直接这样做,但这是一种巧妙的方法,无需保存在正确的目标文件夹中。

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

  

出于安全原因,FileUpload控件不允许您这样做   预加载文件。但是,您可以拥有一个临时目录(例如   preloadingdirectory)用于将文件放入生产之前的文件   directroy(例如uploadedDirectory)。将文件保存到该文件后   临时目录,可以使用FileUploadControl.PostedFile.InputStream   将已发布文件的内容转换为字节数组。从那里   你可以这样做:

     

C#:

     

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

     

VB.NET dim buff as byte()

     

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

     

这将返回图像,因为w / c将是一个字节流   由浏览器解释(假设您有正确的内容类型)   成为你的形象并相应地显示