2016-11-23 5 views
-2

パスの値はルートWebサイトのパスを返します。しかし、私はそこに画像を保存したくない、私は(彼らがローカルからアップロードするとき)ユーザーからの画像を取得したい。Byte []に​​変換するアップロードされたファイルパスが必要です

私のローカルパスで文字列をハードコードすることができますが、それは動作しますが、他の環境では動作しません。私は.net core 1.0を実行しています。

コントローラー:

foreach (var file in files) 
      { 
       if (file.Length > 0) 
       { 
        string path = Path.GetFullPath(model.Filename); 

        var img = Image.FromFile(Path.Combine(path, file.FileName)); 
        using (var ms = new MemoryStream()) 
        { 
         img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
         model.FileData = ms.ToArray(); 
        } 

       } 
      } 

ビュー:あなたは混乱してどのようにファイルアップロードの作品のように見える

<input asp-for="Filename" type="text" id="upload-banner" class="form-control" placeholder="Upload Image" readonly> 
<span class="input-group-btn"> 
<input id="i_file" type="file" name="files" multiple /> 
<button type="button" class="btn btn-effect-ripple btn-primary">Upload</button> 
</span> 

答えて

1

。バックエンドコードは、ファイルを提供しているファイルシステムにアクセスすることはできません。代わりに、HTTPパイプラインを経由します。バックエンドコードは、ローカルファイルシステム上で作業する前に、そのファイルを受け入れ、ローカルでどこかに保存する必要があります。このような

コードはうまくいくかもしれない:

[HttpPost] 
public ActionResult Index(HttpPostedFileBase file) 
{ 
    if (file.ContentLength > 0) 
    { 
     var fileName = Path.GetFileName(file.FileName); 
     var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
     file.SaveAs(path); 
    } 
    return RedirectToAction("Index"); 
} 

See this linkを完全例えば。

+0

ありがとう、申し訳ありませんが私は自分自身を正しく説明していない、英語は母国語ではありません。これを見直した後、私はそれを働かせました、問題はネットコアが多くのmvc要素を変更したことです。応答してくれてありがとう。 –

関連する問題