2011-10-13 34 views
1

我尝试使用UploadFile控制上传文件保存文件,我不能做到这一点。当我尝试保存会话中保存的文件时,会发现问题。首先,我给你UploadControl会话变量:无法从UploadFile控制使用会话

Page.Session["postedFile"] = fuUploadGeometry; 

后,当我点击我的上传按钮,想要保存此文件:

((FileUpload)Session["postedFile"]).SaveAs(filePath); 

我得到错误

cannot access a closed file 

但是,当我直接调用使用的FileUpload名

fuUploadGeometry.SaveAs(filePaht) 

问题不存在。

为什么?如果enybody知道如何解决这个问题,我将不胜感激。

!!!!!!!!!!!!!! 解决的问题:)

我在web.config中

<httpRuntime maxRequestLength="30480" requestLengthDiskThreshold="30480"

设置之前我一切正常:)

回答

0

不使用会话这一点。它没有任何用处。而且,正如您发现的那样,无论如何,您无法在提交请求的地方使用它。

只需使用正在工作的代码即可。这就是你应该这样做的方式。

0

安德鲁说的。并且通过设置requestLengthDiskThreshold,您所做的只是禁用缓冲,这将导致服务器消耗更多的内存,并且所有内容都会运行得更慢。

我认为正确的解决方法是使用SaveAs方法将发布文件保存到临时文件夹中的第一个回传,并存储在视图状态或会话的文件路径的临时文件。

后的任何附加回传或重定向,特别是如果异步线程都参与其中,另存为功能不会,如果需要缓冲工作;您将收到错误“无法访问已关闭的文件”。