Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC-如果发生错误并返回视图,则不会返回上载的文件_C#_Asp.net Mvc_File_File Upload - Fatal编程技术网

C# ASP.NET MVC-如果发生错误并返回视图,则不会返回上载的文件

C# ASP.NET MVC-如果发生错误并返回视图,则不会返回上载的文件,c#,asp.net-mvc,file,file-upload,C#,Asp.net Mvc,File,File Upload,我创建了一个表单,使用户可以选择使用文件类型的输入上传PDF文件。如果发生错误并返回视图,则文件不再存在。我已经研究了好几个小时了,每个人都说如果该功能可用,会有安全风险或其他问题,但肯定有什么可以做的,这样用户就不必重新提交文件了?用户可能不会注意到他们的文件已经不在了,而让用户这么做似乎不是一件好事。有什么想法吗?如果您能提供任何有关修复或以其他方式处理此场景的反馈,我将不胜感激。正如前面提到的。不允许自动重新提交。我能想到的处理这种情况的最好方法是使用异步调用(AJAX),然后,用户将异步

我创建了一个表单,使用户可以选择使用文件类型的输入上传PDF文件。如果发生错误并返回视图,则文件不再存在。我已经研究了好几个小时了,每个人都说如果该功能可用,会有安全风险或其他问题,但肯定有什么可以做的,这样用户就不必重新提交文件了?用户可能不会注意到他们的文件已经不在了,而让用户这么做似乎不是一件好事。有什么想法吗?如果您能提供任何有关修复或以其他方式处理此场景的反馈,我将不胜感激。

正如前面提到的。不允许自动重新提交。我能想到的处理这种情况的最好方法是使用异步调用(AJAX),然后,用户将异步提交文件,您将其存储在临时文件夹中,处理它,如果有任何错误,您可以向用户显示它们,如果没有,您可以从临时文件夹读取文件。你可以随时安排清理工作来删除旧的临时文件。好的,我明白你的意思。您知道从临时文件夹读取文件并在视图上显示它的任何示例吗?假设您将
HttpPostedFileBase
称为
file
,作为代码中的变量。如果(file!=null&&file.ContentLength>0){var fileName=Path.GetFileName(file.fileName);var filePath=Path.Combine(Server.MapPath(~/Temp/”),fileName);file.SaveAs(Path);}存储文件,则只需记住名称,还可以使用
Guid.NewGuid().ToString()
生成一个“随机”名称,只需“记住它”。然后,要读取,您只需
File.ReadAllBytes(Path.Combine(Server.MapPath(“~/Temp/”),fileName))
返回所有字节。