使用asp FileUpload控件,无论如何,只要我在FileUpload控件中选择一个而不将其上传到文件夹等,我就可以拥有一个填充了图像的asp Image,只需用图像填充asp Image控件地选择。
答案 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]);
}
这种方法存在一些问题。
Img的源不会保留在Postback上,你可以 为此创建一个解决方法,但它有点深入。
- 醇>
使用此功能需要支持HTML5 Web FileReader API。 这仅限于有限数量的浏览器(请参阅完整版 支持列表在我发布的链接底部)
如果您只需要将其用于客户端处理,并且仅用于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将是一个字节流 由浏览器解释(假设您有正确的内容类型) 成为你的形象并相应地显示