将 HttpUploadedFileWrapper 转换为不在 System.Web 中的内容
本文关键字:Web System HttpUploadedFileWrapper 转换 | 更新日期: 2024-11-04 17:05:19
我已经在MVC中实现了文件上传 ASP.Net。 我创建了一个视图模型,该模型将上传的文件作为HttpPostedFileWrapper
接收,在控制器操作中,我可以将文件保存到磁盘。
但是,我想执行实际的保存在服务方法中,该方法位于未实现System.Web
的类库中。 因此,我无法将HttpPostedFileWrapper
对象传递给服务方法。
有谁知道如何实现这一点,要么通过将文件作为不同的对象接收,要么在传递之前将其转换为其他对象。 我能想到的唯一方法是将文件的内容读入 MemoryStream,并将其与其他参数(例如文件名)一起单独传递,但只是想知道是否有更好的方法?
谢谢
最好的方法可能是检索图像数据(作为byte[]
)和图像名称(作为string
)并将它们传递给您的服务,类似于您提到的方法:
public void UploadFile(HttpPostedFileWrapper file)
{
// Ensure a file is present
if(file != null)
{
// Store the file data
byte[] data = null;
// Read the file data into an array
using (var reader = new BinaryReader(file.InputStream))
{
data = reader.ReadBytes(file.ContentLength);
}
// Call your service here, passing along the data and file name
UploadFileViaService(file.FileName, data);
}
}
由于byte[]
和string
是非常基本的原语,因此将它们传递给另一个服务应该没有问题。Stream
也可能有效,但它们可能容易出现关闭等问题,而byte[]
已经拥有您的所有内容。