我想知道是否可以在 MVC4(.net 4.5)中将文件上传到服务器并将其保存到内存中。然后在一个单独的表单帖子中,收集该文件并在那时处理它。
我需要能够在页面的一部分上传文件,然后能够在另一部分提交一些表单详细信息,但能够访问我刚刚上传的文件。出于逻辑原因,我不能在主表单上同时发布文件。他们必须分开。
我想知道是否可以在 MVC4(.net 4.5)中将文件上传到服务器并将其保存到内存中。然后在一个单独的表单帖子中,收集该文件并在那时处理它。
我需要能够在页面的一部分上传文件,然后能够在另一部分提交一些表单详细信息,但能够访问我刚刚上传的文件。出于逻辑原因,我不能在主表单上同时发布文件。他们必须分开。
虽然您可以将文件存储在内存会话中,但这样做存在一些风险:
如果这些不是问题,请随时将文件存储在会话中:
Session["UploadedFile"] = someByteArray;
如果这些都是问题,那么我建议:
另一个答案有一些很好的解释。我只是想添加一些东西。
在第一页上,将文件保存在 HD 上,同时将文件名/id 存储在数据库中。现在您有了一个指向当前上传文件名的 ID。此 ID 可以在具有 type="hidden" 输入的页面之间传输,也可以通过 Session 变量传输。
如果您没有数据库,则文件名可能是 ID。例如:生成一个 guid,用这个 guid 保存文件名 例如:[guid].xls
假设您将从第二个表单中保存表单数据以及保存文件(或二进制文件本身)的路径,另一个选项是保存您的数据两次。
发布上传的文件后,按照最初的计划保存文件并获取该新记录的 ID/参考。
您的下一个表单只是将更新的表单数据保存到相同的 ID。