2016-11-23 36 views
-2

路径值返回根网站路径。但是,我不想在那里存储图像,我想从用户那里获取图像(当他们从本地上传时)。需要上传文件路径才能转换为Byte []

我可以用我的本地路径硬编码字符串,它会工作,但不会在其他环境中工作。我正在运行.net核心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元素。感谢您的回应。 –