-1
由System.IO.File.Create
創建的文件不能像HttpPostedFileBase.SaveAs
創建的文件那樣下載。System.IO.File.Create文件無法下載?在mvc 5 asp.net
我的代碼:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveasMP4(HttpPostedFileBase file)
{
try
{
if (file != null && file.ContentLength > 0)
{
string extension = Path.GetExtension(file.FileName);
var path = Path.Combine(Server.MapPath("~/Data/"), file.FileName);
file.SaveAs(path);
if (!extension.Equals(".mp4"))
{
var ffMpeg = new NReco.VideoConverter.FFMpegConverter();
string tempFileName = path.Substring(0, path.LastIndexOf('.')) + ".mp4";
using (FileStream fileStream = System.IO.File.Create(Path.Combine(Server.MapPath("~/Data/"), tempFileName)))
{
ffMpeg.ConvertMedia(path, fileStream, Format.mp4);
}
if (System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
}
}
}
catch (Exception e)
{
ModelState.AddModelError("", e.Message);
return View();
}
return RedirectToAction("Index");
}
如果該文件是MP4可以下載使用file.SaveAs(路徑)。但是,如果文件是其他格式,它使用NReco.VideoConverter成功轉換爲mp4,無法下載,因爲它是由System.IO.File.Create(tempFileName)創建的。只要我可以使用ftp下載。
文件訪問權限是否存在問題? 如果在文件訪問權限中該怎麼辦?
什麼是'tempFileName'和'filess'? –
那麼現在會發生什麼?是否有例外?你爲什麼不使用'fileStream'? –
我已經使用FileStream但無法工作。 當我嘗試下載它時顯示沒有文件。 其實在服務器和我的文件可以通過FTP下載。 –