在我的ASP.Net应用程序中,我必须允许用户附加文件(doc,xls,pdf,zip,txt等)。我们设置界面的方式是用户使用FileUpload工具选择文件和单击“添加”按钮。在“添加”按钮上,文件被添加到GridView,其中包含文件名,大小,注释信息。用户可以为每个项目/报价/发票/任务/子项目添加最多10个文件。用户单击“更新项目”或“创建项目”(根据用户所在的模式/模块),文件将以文件名,大小,类型,注释,内容(binarymax)信息保存到数据库。目前我在ViewState中存储文件的内容。所以问题是如果用户上传更大尺寸的文件,页面大小会增加太多。
那么,解决这个问题的最佳方法是什么?我没有项目ID,而在“项目创建”模式下,我可以直接将数据发送到数据库“添加”按钮单击。我该如何处理这种情况?
P.S:每个文件的最大大小为10 MB。“
答案 0 :(得分:1)
一个选项是您可以从数据库中的当前表(我们称之为 files_tmp )创建克隆表。当用户处于“插入”模式时,您将生成一个随机项目ID并将其保存在 ViewState(“TmpProjID”)中。现在,每当用户在GridView中单击“保存”时,使用临时项目ID将所有文件信息保存到files_tmp表中。
对于文件内容,我将使用临时项目ID作为文件夹名称将它们保存在临时文件夹中。
最后,当用户单击“保存”按钮时,从 project_tmp 表中选择项目id = ViewState(“TmpProjID”)的所有记录并将它们插入到原始表中,然后复制所有文件内容从临时文件夹中将它们放在原始文件夹中,并在保存后从临时文件夹中删除它们。