我想在编辑模式下编辑其他内容,但我不想在编辑模式下重新上传图像文件,该模式已在创建模式下上传。所以我想在编辑模式下查看图像的路径。
public ActionResult Edit(HttpPostedFileBase file, FileUpload fileupload)
{
if (ModelState.IsValid)
{
if (file != null)
{
string fil = System.IO.Path.GetFileName(file.FileName);
string path = System.IO.Path.Combine(Server.MapPath("~/Content/Uploads/Files/"), fil);
file.SaveAs(path);
fileupload.FileURL = "/Content/Uploads/Files/" + file.FileName;
}
db.Entry(fileupload).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(fileupload);
}
编辑视图模式是:
@using (Html.BeginForm("Edit", "FileUploadTest", FormMethod.Post, new { enctype = "multipart/Form-data" }))
{
@Html.AntiForgeryToken()
<label for="file">Upload Image:</label>
<input type="file" name="file" id="file" style="width:50%" />
<input type="submit" value="Save" class="btn btn-default" />
}
我已经使用创建操作/查看方法上传了该文件。
我怎样才能做到这一点?
答案 0 :(得分:0)
我认为可以通过检查文件是否不是null
来简单地实现,如果它不是null
我们首先得到以前的文件路径,而是在插入和上传新文件之后,我们删除了以前的文件,如果文件是null
,我们什么都不做,只是编辑其他内容,如下所示:
public ActionResult Edit(HttpPostedFileBase file, FileUpload fileupload)
{
if (ModelState.IsValid)
{
var model = _db.FileUploads.Find(fileupload.FileUploadId);
string oldfilePath = model.FileURL;
if (file!= null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
string path = System.IO.Path.Combine(
Server.MapPath("~/Content/Uploads/Files/"), fileName );
file.SaveAs(path);
model.FileURL = "/Content/Uploads/Files/" + file.FileName;
string fullPath = Request.MapPath("~" + oldfilePath);
if (System.IO.File.Exists(fullPath))
{
System.IO.File.Delete(fullPath);
}
}
model.OtherStuff = NewStuff;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(fileupload);
}
现在如果file
在编辑模式中不包含任何内容,我们就没有问题,因为我们没有上传任何内容,但如果它有值,我们上传新文件并删除旧文件,您也可以在编辑模式下为您的用户显示当前文件。