检索以前上传的文件

时间:2013-09-03 15:51:05

标签: asp.net-mvc vb.net asp.net-mvc-4

我想知道MVC4(.net 4.5)是否可以将文件上传到服务器并将其保存到内存中。然后在单独的表单帖子中,收集该文件并在那时处理它。

我需要能够在我的页面的一部分上传文件,然后能够在另一部分上提交一些表单详细信息,但能够访问我刚刚上传的文件。出于逻辑原因,我无法在主窗体上同时发布文件。他们必须分开。

3 个答案:

答案 0 :(得分:2)

虽然您可以将文件存储在内存会话中,但这样做有一些风险:

  • 如果有人重置应用程序池或Web服务器怎么办?该数据将丢失
  • 用户可以上传大文件吗?会上传很多小文件吗?您需要确保可以处理内存要求

如果这些不是问题,请随时将文件存储在会话中:

Session["UploadedFile"] = someByteArray;

如果这些是关注点,那么我建议:

  • 将文件存储在磁盘上并在需要时获取
  • 将数据存储在与数据库的会话中

答案 1 :(得分:1)

另一个答案有一些很好的解释。我只想添加一些东西。

在第一页上,将文件保存在HD上,但也将文件名/ id存储在数据库中。现在您有一个ID指向当前上传的文件名。此ID可以在具有type =“hidden”输入的页面之间或通过Session变量进行传输。

如果您没有数据库,则文件名可以是ID。 例如:生成一个guid,用这个guid ex保存文件名:[guid] .xls

答案 2 :(得分:0)

假设您将保存第二个表单中的表单数据以及保存文件(或二进制文件本身)的路径,另一个选项是将数据保存两次。

在发布上传的文件后,按照您最初的计划保存文件,并获取该新记录的ID /参考。

您的下一个表单只是将更新的表单数据保存到相同的ID。