2

我正在开发一个网站,我希望用户能够使用网页将文件上传到服务器。

服务器端是 .NET,但不是 ASP.NET。这意味着,我正在自己生成 html 代码,而不是使用 ASP.NET,并且我正在直接使用 GET 字符串和 POST 流。了解幕后发生的事情是一个很好的练习:D,特别是在现在有一个适用于所有事物的框架的情况下。

我一直在尝试查找有关此的信息,但我找到了几种方法,其中一些是 javascript(我暂时要避免的)和许多预制控件。我想要的是自己做,我不在乎是否有一个不错的、漂亮的和经过充分验证的 ASP.NET 控件……我想要的是了解它是如何做到这一点的。

干杯!

4

4 回答 4

4

在 HTML 中,您需要一个输入 type="file" 的表单,并且表单的 enctype 属性设置为“multipart/form-data”,而不是默认的“application/x-www-form-urlencoded”。

Multipart/form-data 是在RFC 2388中定义的,它的行为与迄今为止您在本实验中解析的 application/x-www-form-urlencoded 不同,尽管它非常简单。RFC 应该为您提供复制 HttpRequest.Files 属性在 ASP.NET 中的工作方式所需的所有知识。

对此的扩展,尝试使用 POST 和 PUT 从页面中的 XMLHttpRequest 或 .NET 客户端应用程序中的 HttpWebRequest 发送流(您可能必须更改 IIS 设置以允许 PUT 通过),因为这是工作的重叠连同您在这里的实验,将涵盖一些即使在使用所有工具包时也具有实际适用性的知识。另一个扩展是在没有框架帮助的情况下尝试在RFC2617中实现这两种方案的双方(有时服务器端真的很有用)。

对此进行实验的荣​​誉,它应该带来真实的经验来支持你可以从阅读RFC 2616中学到的东西(尽管这对于任何从事网络工作的人来说仍然是绝对重要的,因为阅读将涵盖一些你的实验没有的案例触摸,并解释任何在你的结果中看起来很奇怪的东西)。

于 2010-08-10T11:44:40.027 回答
3

我认为应该有你需要的。

基本上,您需要一个<input type="file">and 将表单的编码设置为 multipart/form-data。

于 2010-08-10T11:33:11.277 回答
2
<input type="file" name="somename" size="n"> 

你把它放在一个表格里,hasta la vista baby!

于 2010-08-10T11:33:22.443 回答
1

您不能使用纯 HTML 进行文件上传:您需要在服务器端处理上传的文件。

如果您想了解它是如何“在后台”工作的,您可以从原始 POST 数据中解析上传的文件(请参阅此处了解如何在 ASP 中执行此操作的示例),但您需要某种服务器边语言来做。

于 2010-08-10T11:33:28.340 回答