我想用最简单的方法通过jquery ajax上传文件。
我的代码是:
<body>
<form action="?" method="POST" enctype="multipart/form-data">
<input type="file" name="myfile" /><br>
<input type="submit" name="submit_btn" value="Submit" />
</form>
<div>
<?php
if (isset($_POST['submit'])) {
//move_uploaded_files()...
}
?>
</div>
</body>
当您使用网页上的表单向服务器发送数据时,您可以选择使用
GET
或 POST
方法。这些方法决定了数据如何发送到服务器。
当您将表单方法设置为
GET
时,您在表单字段中填写的数据(包括您选择的文件)会以某种方式添加到网址中。您可能已经注意到,当您提交表单时,浏览器中的 URL 会发生变化。然而,这种方法有一些局限性。它不适合发送大块数据(例如文件),并且以这种方式发送的数据量有最大限制。
另一方面,当您使用
POST
方法时,您输入表单的数据会以不同的方式发送,有点像后台的隐藏包。它更适合包含文件在内的大量数据。这就是当您将表单方法更改为 POST
时文件上传有效的原因。服务器知道如何处理此类数据并正确存储它。
在您的具体情况下,当您将表单方法更改为
GET
时,$_FILES
数组无法按预期工作,因为它旨在处理使用 POST
方法发送的数据。这有点像试图在方孔中安装圆钉 - GET
方法并非旨在像 POST
那样处理文件上传。
如果你确实需要使用
GET
方法并且仍然想上传文件,那就有点棘手了。您可能需要发挥创意,以可添加到 URL 的方式对文件数据进行编码,但由于各种问题,这并不是处理文件的最佳方式。
一般来说,对于文件上传,使用
POST
方法会更好。它确保您的文件安全地到达服务器,并避免尝试将像文件这样的大东西放入像 URL 这样的小空间中的复杂性。如果您决定使用 GET
,您可能需要考虑不同的方法来实现您的目标,例如将文件临时存储在服务器上并通过 URL 传递对这些文件的引用。
那是因为 GET 请求没有正文,而这就是文件所在的位置