将数据存储在 ViewState 或数据库中 Asp.Net

Store data in ViewState or database Asp.Net

在我的 ASP.Net 应用程序中,我必须允许用户附加文件(doc、xls、pdf、zip、txt)等。我们需要设置界面的方式是用户选择文件使用 FileUpload 工具并单击 "Add" 按钮。在 "Add" 按钮上,文件被添加到具有文件名、大小、注释信息的 GridView。每个 Project/Quotation/Invoice/Task/SubProject 用户最多可以添加 10 个文件。一旦用户单击 "Update Project" 或 "Create Project"(取决于 mode/module 用户所在的位置),文件将保存到数据库,其中包含文件名、大小、类型、注释、内容 (binarymax) 信息。目前我将文件的内容存储在 ViewState 中。所以问题是如果用户上传更大的文件,页面大小会增加太多。

那么,解决此问题的最佳方法是什么?在 "Project Create" 模式下,我没有项目 ID,因此我可以在单击 "Add" 按钮时立即将数据发送到数据库。我应该如何处理这种情况?

P.S:每个文件的最大大小为 10 MB。"

好吧,一个选择是您可以从您当前的 table(我们称之为 files_tmp)创建一个克隆 table数据库。当用户处于 "insertion" 模式时,您将生成一个随机项目 ID 并将其保存在 ViewState("TmpProjID") 中。现在,每次用户在 GridView 中单击保存时,使用临时项目 ID 将所有文件信息保存到 files_tmp table 中。

对于文件内容,我将使用临时项目 ID 作为文件夹名称将它们保存在临时文件夹中。

最后当用户点击保存按钮时,select 来自 project_tmp table 的所有记录 where project id = ViewState("TmpProjID") 并插入到你原来的table,然后将临时文件夹中的所有文件内容复制到原来的文件夹中,保存后从临时文件夹中删除。