|
|
1
2
使用简单的POST方法提交文件并没有什么可怕的错误,只是将文件上传绑定到任何相关元数据的细节(即,如果该方法与该方法捆绑在一起,则该方法的其他参数)。
|
|
|
2
2
“当我需要阅读文件时,这会造成任何问题吗?”没有问题。当处理POST请求时,POST会有一个MIME附件,即文件。读取此文件相对简单。 “我接受250MB区域的文件会有困难吗?”不会。只是传输大文件需要一些时间。 “以这种方式接收文件将导致文件完全加载到内存中”不一定正确。许多web服务器处理请求直到MIME附件并停止读取,从而使HTTP头、请求和开放套接字可用于进一步处理。我不知道ASP,但我知道几乎所有的框架都避免读取数据。框架将此留给您的应用程序。
波斯特正是这样做的。没有走出狭窄的HTTP web服务空间,就没有很多替代方案。当然,您可以使用其他协议,如FTP(TFTP,SFTP)来移动文件,但这对于编写客户端应用程序的人来说常常令人困惑。
|
|
3
1
没有理由不包含额外的POST(或GET)参数。我自己可能会将文件名作为额外的POST参数,以便在请求中自动使用本地文件名的客户端可以轻松重命名。如果我预料到命名冲突,我甚至可能在发生冲突时返回服务器选择的名称……我认为其他人使用某种HTTP创建的状态代码。
ASP.NET 2.0+后台程序在文件进入时将其上载到磁盘,以避免将整个请求预加载到RAM中。调整web.config的 requestLengthDiskThreshold 适当地平衡速度和内存使用。如果您想获取流,则无法获取流…尽管您可以获取字节[]数组。我真的不知道那意味着什么。。。。
有许多不同的ASP.NET文件上载组件,它们基本上连接起来,作为一个HttpModule启动请求,并拦截任何多部分/表单上载的请求流。对于ASP.NET2.0,这可能是不必要的,除非您想提供某种进度回调或其他什么。如果是这样的话,它们的机制应该与web服务一起工作。 upload component 如果您打算解析自己的请求,那么就很好地展示了请求的外观。 我想问的一个问题是,客户端http库中对多部分/表单数据的支持程度如何。我怀疑这一切都很好,但你可能想检查一下。 |
|
|
4
0
BITS - Background Intelligent Transfer Service [wiki] 它可能与您/您的客户相关,也可能与您/您的客户无关。 |