2010-08-10 98 views
2

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

服务器端是.NET,但它不是ASP.NET。这意味着,我使用ASP.NET自己生成html代码,并且直接使用GET字符串和POST流。学习下面发生的事情是一个很好的练习:D,特别是现在当有一切的框架时。

我一直在试图找到有关这方面的信息,但我发现了几种方法,其中一些JavaScript(我想暂时避免的事情)和大量的预制控件。我想要的是自己做,我不在乎是否有一个漂亮,漂亮和经过验证的ASP.NET控件...我想要的是理解它是如何做到的,以及它的所有含义。

干杯!

回答

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

这个实验的荣誉,它应该带来真实的经验,以备份你可以从阅读中学到的东西RFC 2616(尽管这对于任何人来说都是绝对重要的,因为阅读会覆盖你的实验不要碰,并解释结果中看起来很奇怪的任何内容)。

+2

+1迄今为止的最佳答案! – 2010-08-10 11:51:17

+1

非常感谢,我会尝试看看我能得到什么:) 亲切的问候。 – vtortola 2010-08-10 14:23:30

2
<input type="file" name="somename" size="n"> 

你把它放在一个表格中,并且hasta la vista宝贝!

1

您无法使用纯HTML进行文件上传:您将需要处理服务器端上传的文件。

如果您想要了解它是如何在“引擎盖下”工作的(请参阅here有关如何在ASP中执行此操作的示例),则可以将上传的文件从原始POST数据中解析出来,但是您将需要某种服务器端语言来做到这一点。

+1

如果您自己构建** all **服务器代码,那么您需要服务器端语言,而不是服务器端框架,这就是querant似乎正在做的事情(事实上,虽然疯狂地重新创建一个现场项目的轮子,这是一个非常** **的教育练习)。 – 2010-08-10 11:47:07

+0

@Jon好点!你甚至可以在理论上建立一个你自己的小型Web服务器 - 我认为有几个示例项目。但是,这会深入到处理HTTP协议及其怪癖。我不想在一千年内这样做:)但它绝对具有很大的教育价值。 – 2010-08-10 11:50:43

+3

我在20世纪90年代自己写了一个简单的网络服务器。它没有效率或完整,或者无论如何都不足以完成足够用于付费项目的工作,但它非常有趣,它教会了我深刻的HTTP知识的丰富**,我仍然今天使用。 – 2010-08-10 11:57:53