我需要制作一个Asp.net控件来上传通过Ajax发送文件的多个文件。
此控件可用于将文件存储在文件夹或数据库中,持久性将由将使用我的控件的类决定,而不是由控件本身决定。所以我需要在这里达到一定程度的灵活性。
上传的文件将像Control List一样存储在Control Class中,直到使用我的控件的类执行"官方帖子"这将消耗,然后最终释放该类。
在一个简单的示例中,使用我的控件的Form将使用通过我的控件和upong保存所生成的所有上传生成的List,该表单将读取我的列表并以最佳方式保留它。
这里的问题是方法:
我无法使用updatePanel,因为它不允许文件输入,并且(afaik)不会保持纯粹javascript生成的输入=文件的状态。
无法使用WebMethod属性发送数据,因为它要求我的方法是静态的,因此无法使用此方法提供内存对象。
另一种选择是使用手工制作的Ajax,这并不困难,但我不确定Asp.net的行为方式,是否在Ajax Calls之间保持状态?我可以从不同的调用中访问内存对象中的相同内容吗?我是否必须跟踪视图状态或使用会话?是否可以使用会话或viewstate(!)来保存上传的文件?
执行:问题是不使用ajax上传文件,我使用blueimp.github.com/jQuery-File-Upload,问题是在服务器端跟踪它们而不会持续存在。
示例
让我试着解释一下:
0)我有一个控件,这个控件有一个属性是文件列表 - List<files> FilesUploaded
;
1)在每次ajax上传中,我将即将发布的文件添加到列表FilesUploaded.Add(FileComingFromAjax)
2)我的控件进入一个表单(任何形式),当我保存表单BtSave.Click()
时,Form类需要获取文件列表并保持这样:他们像这样访问它{{ 1}}。请注意,这些文件位于内存中,而不在磁盘或数据库中。
我的疑问是,每次请求后都会保留文件吗? namelly:
方法是否会通过ajax调用,使用相同的列表?
当我提交主表单时,表单类是否可以使用我刚刚上传的文件访问列表?
答案 0 :(得分:2)
我将使用会话,我不怕再向会话添加对象,ASP.net, adding objects to a session variable
答案 1 :(得分:1)