ASP.net文件操作延迟

时间:2010-01-07 16:29:01

标签: asp.net file io operations

好的,这就是问题所在:我正在从FileUpload控件中读取流,读取n个字节的块并在循环中写入数组,直到我到达流的末尾。

现在我这样做的原因是因为我需要在上传仍在进行时检查几件事情(而不是做一个Save();这样可以一次性完成)。这是问题:当从本地机器执行此操作时,我可以看到文件正常上传并且其大小增加(必须在循环中添加Sleep();子句以实际查看正在写入的文件)。

但是,当我从远程计算机上传文件时,在文件完成上传之前我无法看到它。此外,我已经添加了另一个调用来将进度写入文本文件,因为进展正在进行,我得到同样的事情。本地:文件在上传过程中更新,远程:令牌文件仅在上传完成后出现(由于我需要它而上传仍在发生,这有点无用)。

在(或ASP.net)中是否存在某种安全设置,可能将文件保存在远程计算机的临时位置而不是本地计算机,然后将它们移动到指定目标?当我从本地机器浏览时(甚至在公共主机名上)显示错误消息,而不是从远程机器浏览时显示的通用编译错误页面/通用异常页面(并且customErrors不是关)

有关此的任何线索?

提前致谢。

2 个答案:

答案 0 :(得分:0)

FileUpload控件呈现为<input type="file"> HTML元素;这样,您的浏览器将打开该文件,读取所有内容,编码并发送。

您的ASP.NET请求刚刚在IIS收到所有浏览器数据后启动。

这样,您需要对客户端组件(Flash,Java applet,Silverlight)进行编码,以便以小块的形式发送文件并在服务器端重建该文件。

编辑:部分信息on MSDN

  

要控制在处理请求时是将文件临时存储在内存中还是服务器上,请设置httpRuntime元素的requestLengthDiskThreshold属性。使用此属性可以管理输入流缓冲区的大小。默认值为256个字节。您指定的值不应超过为maxRequestLength属性指定的值。

答案 1 :(得分:0)

我了解您要检查正在上传的文件的内容。 如果这是您的要求,那么为什么不在从HttpPostedFile读取文件时添加文本框并填充它。