文件上传失败八成因enctype未设对;必须设为multipart/form-data,仅当含file输入或FormData含二进制内容时需显式设置,其他纯文本字段用默认application/x-www-form-urlencoded即可。
表单提交时文件上传失败,八成是
没设对。它不是可有可无的装饰属性,而是决定浏览器如何打包数据、服务端能否正确解包的关键开关。
什么时候必须显式设置
只有两种情况需要你动手改:
出现在表单里,或者你要用
手动构造含二进制内容的请求。其他纯文本字段(
、
、
)走默认值
完全没问题。
常见错误现象:
选了文件但后端收不到
或
后端解析出空字符串或乱码,尤其在 ASP.NET WebForms 里
未设时会静默回退到默认编码
用
+
提交却忘了删掉
头,导致 boundary 丢失
是唯一正确选择
只要涉及文件,就必须用这个值。它会让浏览器把整个请求体拆成多个部分(parts),每个部分带自己的
和可选的
,并用随机生成的 boundary 分隔。
立即学习
“
前端免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
实操建议:
ASP.NET WebForms 中,直接在
标签里写
;别依赖
属性在代码后台赋值——它只在控件初始化后才生效,若页面已渲染,再赋值无效
原生 HTML 表单中,确保
是
(
不支持 enctype)
不要手动拼接
,也不要在 JS 中给
请求头硬设
—— 浏览器会自动覆盖并填入正确的 boundary
和
别乱碰
前者是默认值,适合纯文本提交;后者几乎没人用,仅用于调试时让原始值“裸奔”显示,不处理空格转
、特殊字符转 % 编码,且完全不支持文件上传。
性能与兼容性影响:
用
上传大文件时,内存占用比
高,因为要缓存整个分段结构;但这是必要代价,没得绕
所有现代浏览器都完整支持这三个值,但旧版 IE 对
的实现不一致,建议彻底忽略
某些轻量后端框架(如早期 Flask 或自定义解析器)若没启用 multipart 解析中间件,即使前端设对了,也会把整个请求体当字符串读——这时候问题不在
,而在服务端配置
最容易被忽略的一点:表单嵌套在 ASP.NET Master Page 或 UpdatePanel 里时,
必须写在最外层
上,子控件无法单独覆盖。一旦漏写,整个上传链就断在第一关。
enctypeenctypeinput type="file"FormDatatextselectcheckboxapplication/x-www-form-urlencodedRequest.Filesreq.filesHtmlForm.EnctypefetchFormDataContent-Typeenctype="multipart/form-data"Content-DispositionContent-Typeenctype="multipart/form-data"HtmlForm.EnctypemethodPOSTGETboundaryfetchContent-Type: multipart/form-dataapplication/x-www-form-urlencodedtext/plain+multipart/form-dataurlencodedtext/plainenctypeenctype