问题描述
如何将“ 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文档在这里有一个示例:
您要执行的操作是从HttpPostedFileClass获取文件流,如果没有,请从默认位置获取该文件流。您可以声明一个空的内存流开始,并在适当的地方从HttpPostedFile或您的本地资源中填充该流。
,尝试在“视图”之类的视图中使用检查null:
if (userProfileForSaveVM.UserProfileSingleVM.UploadedImage != null)
{
<img src= "@Url.Content("~/uploads/FileUpload12011_03_02_11_49_22.jpg")" alt="IMAGES" />
}