2016-07-28 95 views
0

我使用形式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"

我正从的FileData路径: enter image description here

并将其转换为base64,但它不显示在页面 我有文件未找到错误。 我该如何解决它?如果URL错误,我怎么才能得到正确的?

回答

1

您无法在网络上使用物理路径(您使用的路径)。物理路径如“C:\ something”是只能由您的操作系统使用的路径。

但是,该URL是您需要并使用的路径,因此您需要将文件放置在主机(IIS)可读的某个位置。

您已经将文件写入“〜/ Files”中。所以你只需要在最后添加文件名。

var url= "~/Files/"+filename; 

您需要保存的文件名,当您上传您的文件,所以当你想从数据库提取数据,取从数据库文件名,并使用该创建URL。

相关问题