【问题标题】:How can I create an image object from an FileUpload control in asp.net?如何从 asp.net 中的 FileUpload 控件创建图像对象?
【发布时间】:2009-12-07 15:55:09
【问题描述】:

我有一个 FileUpload 控件。我正在尝试保存上传的文件(图像)并保存文件的多个缩略图副本。

当我尝试这样的事情时:

System.Drawing.Image imgOriginal = System.Drawing.Image.FromStream(PhotoUpload.PostedFile.InputStream);

我收到“System.ArgumentException:参数无效。”

我也尝试使用 PhotoUpload.FileBytes 从文件字节而不是 InputStream 创建图像,但发生了同样的错误。

上传的文件是 jpg。我知道这是一个有效的 jpg,因为它可以保存原始文件。

编辑:这段代码确实有效。参数无效是由于 PhotoUpload.PostedFile.InputStream 为空......这似乎是一个完全不同的问题。看起来在我保存原始文件后,文件上传流消失了。

编辑:发现一个FileUpload的InputStream只能被读取/消费一次然后就没了。

为了解决这个问题,我将 fileupload 文件字节保存到一个字节数组中,并使用字节数组创建图像的副本。

代码:

// Copy the FileBytes into a byte array
byte[] imageData = PhotoUpload.FileBytes;

// Create a stream from the byte array if you want to save it somewhere:
System.IO.Stream myStream = new System.IO.MemoryStream(imageData);

// Or create an image from the stream as many times as needed:
System.Drawing.Image imgOriginal = System.Drawing.Image.FromStream(myStream);

【问题讨论】:

  • 与其尝试从流中打开文件,不如打开保存在磁盘上的物理文件?
  • 我没有将文件保存到文件系统。我通过网络服务将它保存到另一台服务器。所以我想传递 web 服务 2 个文件:原始文件(这工作正常)和缩略图(还没有工作)。

标签: asp.net file-upload


【解决方案1】:

看看这个链接

ASP Net - How to pass a postedfile to a system.drawing.image

这是我的函数调用:

uploadAndSizeImage(System.Drawing.Image.FromStream (uploadedFileMD.PostedFile.InputStream))

我收到此错误:

异常详情: System.ArgumentException:无效 使用的参数。

虽然我没有出现太多 Google 确实找到了可能的参考 由流阅读器引起 在溪流的尽头和我 需要将其重置为位置一。 但这有点模糊,而不是 真的很确定它是否适用于此。

这有帮助吗?

编辑:

另外,您是否尝试过使用类似的方式手动读取文件

System.IO.FileStream fs = System.IO.File.OpenRead(@"Image.JPG");
byte[] data = new byte[fs.Length];
fs.Read(data, 0, data.Length);

System.IO.MemoryStream ms = new System.IO.MemoryStream(data);
System.Drawing.Image image = Image.FromStream(ms);

或者从 FileUpload 保存一个临时副本并从文件中加载图像?

【讨论】:

  • 谢谢,这确实有帮助,尽管我现在的问题不是转换。我发现当我拨打这个电话时我的 FileUpload 内容已经消失了......在我拨打这个电话之前的某个地方,我保存了文件上传,然后它就消失了......不确定这是否有意义。但现在我需要弄清楚如何保留文件上传内容。
猜你喜欢
  • 2010-09-27
  • 2012-01-09
  • 2011-03-08
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多