上传文件的通用做法
<form method="post" name="form" action="your.php" enctype="multipart/form-data">
<input type='text' name='yourname' />
<input type='file' name='myfile' />
<input type='submit' name='submit' value='submit' />
</form>
此时在your.php中使用$_FILES['myfile']可以接收,使用$_FILES['myfile']['name']可以得到文件名,后续按照自己的思路处理。
但在header中如果你引用了
<script src="js/jquery.mobile-1.4.5.min.js"></script>
则无论怎么操作都会发现在dev tool中显示传输的是application/x-www-form-urlencoded,而不是你所期望的Multipart/form-data,在各种尝试后,发现,只要注释了jQueryMobile,就可以正常上传文件。所以问题出在jQueryMobile上。
查找资料后发现,jQueryMobile默认以ajax处理form,所以应该在form上禁用ajax(data-ajax="false")以按照html逻辑提交即可。
<form method="post" name="form" action="your.php" enctype="multipart/form-data" data-ajax="false">
至此,问题解决,记录下。