1

我正在处理页面上的表单,该表单使用asp:FileUpload允许用户将文件上传到服务器。我是 ASP 的新手,并且正在使用 C# 作为我的代码隐藏。计划是让用户一次“附加”一个文件,将它们添加到asp:listbox. 最后,当表单提交时,列表框中的文件会保存到服务器。

虽然通过使用从 FileUpload 保存文件似乎很容易

myFileUpload.SaveAs("path");

我在弄清楚如何独立于 FileUpload 跟踪文件时遇到了一些困难。我可以很容易地使用

Path.GetFileName(myFileUpload.PostedFile.FileName);

但实际上我需要有一些方法来跟踪不仅仅是名称。我的第一个想法可能是使用某种临时文件夹,但文件可能会非常大,所以我不想这样做,因为保存可能需要一段时间。

如何保留文件,以便以后可以独立于 FileUpload 将其保存在服务器上?

4

2 回答 2

1

而不是使用ListBox我会使用实际<asp:FileUpload>控件,这样您就可以访问该控件的所有方法 - 例如Save等。

你可以在你的页面上放一堆这些,然后简单地隐藏除第一个之外的所有内容。然后有一个按钮说“添加另一个” - 然后点击这个按钮show控制next <asp:FileUpload>- JQuery 将是一个不错的选择来显示<asp:FileUpload>当前隐藏的下一个。

然后在您的回发中,您可以遍历所有<asp:FileUpload>控件,如果它HasFile是控件上的属性,则执行保存等。

如果需要,将它们保存到临时文件夹中 - 可能使用 a 重命名文件GUID并将此列表存储GUID在用户会话中,以便您可以在需要时获取它们。

于 2013-06-14T15:59:32.897 回答
1

调用 SaveAs 后,您将保存文件。基本的 FileUpload 控件不允许您将文件缓存到某处,而无需先将其实际上传到服务器。如果您希望上传多个文件而不上传直到最后,您可能需要考虑动态生成 FileUpload 控件(用户想要多少就多少)。这样他们就可以一次选择要上传的文件,然后在最后点击“上传”按钮。

不过,这样做有点笨拙。我会寻找一些第三方的多重上传控件。我过去使用过 PLUpload。

于 2013-06-14T16:00:50.317 回答