2016-07-28 17 views
0

私は、フォームのFILEDATAを使用してサーバに画像をアップロードする:アップロードした画像をasp.netアプリケーションに表示するには?

「C:\ Users \ユーザーおっと\プロジェクト\ Visual Studioの2015 \ドキュメント\ WebApplication1と\ ForMyCustomers \ WebApplication1と

[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; 
    } 


} 

パスは次のようになります\ファイル\ BodyPart_b40d80c5-47dc-41デシベル-8e35-9d39d4e27939"

私はFILEDATAからのパスを取得: enter image description here

これをbase64に変換しますが、ページには表示されません ファイルが見つかりませんでした。 どうすれば解決できますか? URLが間違っている場合、どのように正しいものを取得できますか?

答えて

1

Web上で物理パス(使用したもの)を使用することはできません。 "C:\ something"のような物理パスは、お使いのOSでのみ使用できるパスです。

ただし、URLは、必要なパスであり、ホスト(IIS)が読み取り可能な場所にファイルを配置する必要があります。

「〜/ファイル」にはすでにファイルが書き込まれています。最後にファイル名を追加するだけです。

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

あなたは、DBからデータをフェッチDBからファイル名を取得して、それを使ってURLを作成したいときに、ので、あなたのファイルをアップロードする際のファイル名を保存する必要があります。

関連する問題