如何在asp.net应用程序中显示上传的图像?
问题描述:
我使用形式FILEDATA上传图像到服务器:如何在asp.net应用程序中显示上传的图像?
[Route("upload")]
[HttpPost]
public async Task<HttpResponseMessage> Upload()
{
try
{
if (!Request.Content.IsMimeMultipartContent()) {
Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
}
var provider = GetMultipartProvider();
var result = await Request.Content.ReadAsMultipartAsync(provider);
//Get Album name from Form
var titleOfAlbum = GetTitleOfAlbum(provider);
//get path to file
var pathToCoverDecoded = result.FileData.First().LocalFileName;
//Encodeing to base 64 path
var bytes = Encoding.UTF8.GetBytes(pathToCoverDecoded);
var base64 = Convert.ToBase64String(bytes);
Album al = new Album();
al.Title = titleOfAlbum;
al.PathToCover = base64;
db.Albums.Add(al);
db.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
private string GetDesereleazedFileName(MultipartFileData fileData)
{
var fileName = GetFileName(fileData);
return JsonConvert.DeserializeObject(fileName).ToString();
}
private string GetFileName(MultipartFileData fileData)
{
return fileData.Headers.ContentDisposition.FileName;
}
private MultipartFormDataStreamProvider GetMultipartProvider()
{
var uploadFolder = HttpContext.Current.Server.MapPath("~/Files");
if (Directory.Exists(uploadFolder) == false)
{
Directory.CreateDirectory(uploadFolder);
}
return new MultipartFormDataStreamProvider(uploadFolder);
}
private string GetTitleOfAlbum(MultipartFormDataStreamProvider provider)
{
var titleOfAlbum = "";
foreach(var key in provider.FormData.GetValues(0))
{
titleOfAlbum = key;
}
return titleOfAlbum;
}
}
路径是这样的:
“C:\用户\哎呀\文档\ Visual Studio的2015年\项目\ WebApplication1 \ ForMyCustomers \ WebApplication1 \文件\ BodyPart_b40d80c5-47dc-41分贝-8e35-9d39d4e27939"
并将其转换为base64,但它不显示在页面 我有文件未找到错误。 我该如何解决它?如果URL错误,我怎么才能得到正确的?
答
您无法在网络上使用物理路径(您使用的路径)。物理路径如“C:\ something”是只能由您的操作系统使用的路径。
但是,该URL是您需要并使用的路径,因此您需要将文件放置在主机(IIS)可读的某个位置。
您已经将文件写入“〜/ Files”中。所以你只需要在最后添加文件名。
var url= "~/Files/"+filename;
您需要保存的文件名,当您上传您的文件,所以当你想从数据库提取数据,取从数据库文件名,并使用该创建URL。