无法使用 Session 从 UploadFile 控件保存文件

发布于 2024-12-10 05:27:25 字数 692 浏览 0 评论 0 原文

我尝试使用 UploadFile 控件上传文件,但无法执行此操作。当我尝试保存会话中保留的文件时,我意识到问题。首先,我将 UploadControl 分配给会话变量:

Page.Session["postedFile"] = fuUploadGeometry;

之后,当我单击“上传”按钮并想要保存此文件时:

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

我收到错误

cannot access a closed file

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

fuUploadGeometry.SaveAs(filePaht)

问题不存在。

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

!!!!!!!!!!!!!!! 问题解决了:)

我在 web.config

中设置,到目前为止一切正常:)

I try to upload file using UploadFile control and I cannot do this. Problem realise when I try to save file which I keep in session. First of all I assign UploadControl to session variable:

Page.Session["postedFile"] = fuUploadGeometry;

After that when I click on my Upload button and want to save this file:

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

I get error

cannot access a closed file

But when I invoke directly using FileUpload name

fuUploadGeometry.SaveAs(filePaht)

problem doesn't exist.

Why?? If enybody knows how solve this problem I will be grateful.

!!!!!!!!!!!!!!
The problem solved :)

I set in web.config

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

and till now everything works fine :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

没有伤那来痛 2024-12-17 05:27:25

不要为此使用会话。它没有任何作用。而且,正如您所发现的,无论如何,您都不能在提交请求之外使用它。

只需使用有效的代码即可。这就是你应该这样做的方式。

Do not use Session for this. It serves no purpose. And, as you have discovered, you can't use it beyond the request where it is submitted, anyway.

Just use the code that's working. That's how you are supposed to do it.

小嗲 2024-12-17 05:27:25

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

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

在任何额外的回发或重定向之后,特别是在涉及异步线程的情况下,如果需要缓冲,SaveAs 函数将无法工作;您将收到错误“无法访问已关闭的文件”。

What Andrew said. And by setting requestLengthDiskThreshold all you are doing is disabling buffering which will cause the server to consume more memory and everything to run slower.

I think the correct resolution is to use the SaveAs method to save the posted file to a temporary folder on the FIRST postback, and store the file path to the temp file in viewstate or session.

After any additional post back or redirect, especially if asynchronous threads are involved, the SaveAs function is not going to work if buffering is required; you will get the error "Cannot access a closed file".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文