路径值返回根网站路径。但是,我不想在那里存储图像,我想从用户那里获取图像(当他们从本地上传时)。
我可以使用本地路径对字符串进行硬编码,但它可以正常工作,但在其他环境中无效。我正在运行.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>
答案 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获取完整示例。