需要上传文件路径转换为Byte []

时间:2016-11-23 19:16:32

标签: c# asp.net asp.net-mvc asp.net-core-mvc

路径值返回根网站路径。但是,我不想在那里存储图像,我想从用户那里获取图像(当他们从本地上传时)。

我可以使用本地路径对字符串进行硬编码,但它可以正常工作,但在其他环境中无效。我正在运行.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 个答案:

答案 0 :(得分: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获取完整示例。