0

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

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

但是,当我从远程机器上传文件时,在文件完成上传之前我看不到它。此外,随着进度的进行,我添加了另一个调用以将进度写入文本文件,我得到了同样的结果。本地:随着上传的进行文件更新,远程:令牌文件仅在上传完成后出现(这有点没用,因为我在上传仍在进行时需要它)。

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

这有什么线索吗?

提前致谢。

4

2 回答 2

0

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

IIS 接收到所有浏览器数据后,您的 ASP.NET 请求才开始。

这样,您需要编写一个客户端组件(Flash、Java 小程序、Silverlight)来以小块的形式发送文件并在服务器端重新构建该文件。

编辑:关于 MSDN 的一些信息:

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

于 2010-01-07T16:37:30.333 回答
0

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

于 2010-01-08T06:21:06.853 回答