上传的文件未保存到文件系统
Uploaded file not saving to file system
上下文
我正在为正在构建的 CMS 创建媒体库。基本功能包括上传文件并将其存储在文件系统中。但是,它会为保存的文件创建一个 ID 目前我正在测试通过 localhost
构建的内容。
db.Files.Add(mediafile);
添加文件名,但不向目录添加图像。
问题
如何将发布的文件保存到目录中? (评论部分)
源代码
/Areas/Media/Controllers/FilesController.cs
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "FileId,FileName,FileURL")] File file, HttpPostedFileBase upload)
{
if (ModelState.IsValid)
{
if (upload != null && upload.ContentLength > 0)
{
var mediafile = new File
{
FileName = Guid.NewGuid().ToString() + System.IO.Path.GetExtension(upload.FileName),
FileType = FileType.File
};
//As seen in tutorial
//instructor.FilePaths = new List<FilePath>();
//instructor.FilePaths.Add(photo);
//Educated Guessing
//db.Files = new List<File>();
//db.Files.Add(mediafile);
}
db.Files.Add(file);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(file);
}
/Areas/Media/Views/File/Create.cshtml
@using (Html.BeginForm("Create", "Files", FormMethod.Post, new { enctype = "multipart/Form-data" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="control-label col-md-2">
<label for="file">Upload Image for Slide:</label>
</div>
<div class="col-md-10">
<input type="file" name="upload" id="fileId" style="width:50%" />
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
/Models/Media.cs
using System.Web;
namespace JosephMCasey.Models
{
public enum FileType
{
Thumb = 1, File
}
public class File
{
[Key]
public int FileId { get; set; }
[StringLength(255)]
public string FileName { get; set; }
public FileType FileType { get; set; }
}
}
已用资源
使用 HttpPostedFile 对象的 SaveAs 方法:
upload.SaveAs("Path\to\image\directory");
尝试接受
HttpPostedFileWrapper
而不是
HttpPostedFileBase
HttpPostedFileBase 是一个抽象class
您还需要实际调用
upload.SaveAs(fileName)
因为您的数据库似乎将条目保存在数据库中而不是您的文件系统中。
上下文
我正在为正在构建的 CMS 创建媒体库。基本功能包括上传文件并将其存储在文件系统中。但是,它会为保存的文件创建一个 ID 目前我正在测试通过 localhost
构建的内容。
db.Files.Add(mediafile);
添加文件名,但不向目录添加图像。
问题
如何将发布的文件保存到目录中? (评论部分)
源代码
/Areas/Media/Controllers/FilesController.cs
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "FileId,FileName,FileURL")] File file, HttpPostedFileBase upload)
{
if (ModelState.IsValid)
{
if (upload != null && upload.ContentLength > 0)
{
var mediafile = new File
{
FileName = Guid.NewGuid().ToString() + System.IO.Path.GetExtension(upload.FileName),
FileType = FileType.File
};
//As seen in tutorial
//instructor.FilePaths = new List<FilePath>();
//instructor.FilePaths.Add(photo);
//Educated Guessing
//db.Files = new List<File>();
//db.Files.Add(mediafile);
}
db.Files.Add(file);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(file);
}
/Areas/Media/Views/File/Create.cshtml
@using (Html.BeginForm("Create", "Files", FormMethod.Post, new { enctype = "multipart/Form-data" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="control-label col-md-2">
<label for="file">Upload Image for Slide:</label>
</div>
<div class="col-md-10">
<input type="file" name="upload" id="fileId" style="width:50%" />
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
/Models/Media.cs
using System.Web;
namespace JosephMCasey.Models
{
public enum FileType
{
Thumb = 1, File
}
public class File
{
[Key]
public int FileId { get; set; }
[StringLength(255)]
public string FileName { get; set; }
public FileType FileType { get; set; }
}
}
已用资源
使用 HttpPostedFile 对象的 SaveAs 方法:
upload.SaveAs("Path\to\image\directory");
尝试接受
HttpPostedFileWrapper
而不是
HttpPostedFileBase
HttpPostedFileBase 是一个抽象class
您还需要实际调用
upload.SaveAs(fileName)
因为您的数据库似乎将条目保存在数据库中而不是您的文件系统中。