如何使用HTML将文件上传到网站

时间:2010-08-10 11:30:26

标签: html upload multipart

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

服务器端是.NET,但它不是ASP.NET。这意味着,我自己生成HTML代码而不是使用ASP.NET,我正在使用GET字符串和POST流。了解幕后发生的事情是一个很好的练习:D,特别是现在有一个框架可以解决所有问题。

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

干杯!

4 个答案:

答案 0 :(得分:4)

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

多部分/表单数据在RFC 2388中定义,并且与目前为止您使用此实验解析的application / x-www-form-urlencoded的行为不同,尽管它非常简单。 RFC应该为您提供复制HttpRequest.Files属性在ASP.NET中的工作方式所需的全部知识。

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

为了试验这个,它应该带来真实的经验来支持你可以从阅读中学到的东西RFC 2616(尽管这对于任何对网络内容都非常熟悉的人来说仍然是绝对至关重要的,因为阅读会覆盖一些你的实验没有触及的情况,并解释你的结果中看起来很奇怪的任何事情。)

答案 1 :(得分:3)

我认为以下链接应包含您需要的信息:

http://www.cs.tut.fi/~jkorpela/forms/file.html

基本上你需要一个输入类型=“文件”,并将表单的编码设置为multipart / form-data。

答案 2 :(得分:2)

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

你把它放在一个表格中,并且哈斯塔拉维斯塔宝贝!

答案 3 :(得分:1)

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

如果您想了解它的工作原理,您可以从原始POST数据中解析上传的文件(有关如何在ASP中执行此操作的示例,请参阅here),但是你 需要某种服务器端语言来完成它。