以下是使用html控件<input type="file">上传文件时遇到的一些问题总结,方便大家查阅:
1. 如果直接用<input type="file"...></input>html客户端控件选择文件,必须要在<input type="file">控件中加入name属性,否则服务端无法获取控件值(即文件)
2. asp.net默认设置对上传文件有大小限制,最大4M,注意上传时文件是否超过限制,超过限制后除了上传不成功没有任何提示;解决方法是:可以在web.config文件中加入配置项扩大最大上传附件大小(maxRequestLength以 KB 为单位,executionTimeout以秒为单位)
<configuration>
<system.web>
<httpRuntime
maxRequestLength="1048576"
executionTimeout="3600"
/>
</system.web>
</configuration>
<system.web>
<httpRuntime
maxRequestLength="1048576"
executionTimeout="3600"
/>
</system.web>
</configuration>
3. 注意form中需要加入method="post" enctype="multipart/form-data"属性,否则无法上传成功
4. 由于<input type=file>控件有安全限制,如果使用别的控件事件触发file控件的click事件,在提交时浏览器首先会清空file控件的值,第二次点击才会提交,导致“两次点击提交按钮问题”
提示:
好多门户网站在发送邮件或上传文件时,会使用其“自定义”的上传控件,其实这个方法是采用“造假”的方式实现的,实际上用的还是<input type="file">控件,简单来说页面是在页面上使用一个像按钮一样的图片,前面放一个file控件并将它的透明度设置为0,这样用户点击“上传文件”的图片按钮,实际是设置file控件的值,然后file控件的onchange事件会把文件名称放入该页面的“自定义上传控件中”。感兴趣的可以在网上搜索一下具体实现方法。