将路径是图像转换为HttpPostedFileBase

问题描述

我为用户提供上传图片

但是如果没有完成,我想在图像文件夹中设置认图像。

如何将“ HttpPostedFileBase”类型的模型属性设置为位于以编程方式设置的路径上的图像?

模型属性

 public HttpPostedFileBase UploadedImage { get; set; }

我尝试了这些但没有成功。

我得到的这个:无法将类型'string'转换为'System.Web.HttpPostedFileBase'。

 if (userProfileForSaveVM.UserProfileSingleVM.UploadedImage == null)
 {
   // Set a default.
   userProfileForSaveVM.UserProfileSingleVM.UploadedImage = 
   "F:\\GbngWebClient\\GbngWebClient\\Images\\Avatar.png";
 }

我得到的一个属性或索引器'HttpPostedFileBaseInputStream'不能分配给它-只读。

 if (userProfileForSaveVM.UserProfileSingleVM.UploadedImage == null)
 {
   // Set a default.
   String pathImage = Server.MapPath("F:\\GbngWebClient\\GbngWebClient\\Images\\Avatar.png");
   userProfileForSaveVM.UserProfileSingleVM.UploadedImage.InputStream = new FileStream(pathImage,FileMode.Open);
 }

我得到的这个:无法将类型'byte []'转换为'System.Web.HttpPostedFileBase'。

 if (userProfileForSaveVM.UserProfileSingleVM.UploadedImage == null)
 {
   // Set a default.
   byte[] imageArray = 
   System.IO.File.ReadAllBytes(@F:\\GbngWebClient\\GbngWebClient\\Images\\Avatar.png");
   userProfileForSaveVM.UserProfileSingleVM.UploadedImage = imageArray;
 }

解决方法

我不确定为什么要创建这种类型的类。该类用于从HTTP请求接收文件数据。通常,您可以使用此类的输入流从此类中获取数据。 msdn文档在这里有一个示例:

https://docs.microsoft.com/en-us/dotnet/api/system.web.httppostedfile.inputstream?view=netframework-4.8#System_Web_HttpPostedFile_InputStream

您要执行的操作是从HttpPostedFileClass获取文件流,如果没有,请从默认位置获取该文件流。您可以声明一个空的内存流开始,并在适当的地方从HttpPostedFile或您的本地资源中填充该流。

,

尝试在“视图”之类的视图中使用检查null:

if (userProfileForSaveVM.UserProfileSingleVM.UploadedImage != null)
{
   <img src= "@Url.Content("~/uploads/FileUpload12011_03_02_11_49_22.jpg")" alt="IMAGES" />
}