你能用最简单的方法告诉我使用jquery上传文件吗?

问题描述 投票:0回答:2

我想用最简单的方法通过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>
php html superglobals
2个回答
3
投票

当您使用网页上的表单向服务器发送数据时,您可以选择使用

GET
POST
方法。这些方法决定了数据如何发送到服务器。

当您将表单方法设置为

GET
时,您在表单字段中填写的数据(包括您选择的文件)会以某种方式添加到网址中。您可能已经注意到,当您提交表单时,浏览器中的 URL 会发生变化。然而,这种方法有一些局限性。它不适合发送大块数据(例如文件),并且以这种方式发送的数据量有最大限制。

另一方面,当您使用

POST
方法时,您输入表单的数据会以不同的方式发送,有点像后台的隐藏包。它更适合包含文件在内的大量数据。这就是当您将表单方法更改为
POST
时文件上传有效的原因。服务器知道如何处理此类数据并正确存储它。

在您的具体情况下,当您将表单方法更改为

GET
时,
$_FILES
数组无法按预期工作,因为它旨在处理使用
POST
方法发送的数据。这有点像试图在方孔中安装圆钉 -
GET
方法并非旨在像
POST
那样处理文件上传。

如果你确实需要使用

GET
方法并且仍然想上传文件,那就有点棘手了。您可能需要发挥创意,以可添加到 URL 的方式对文件数据进行编码,但由于各种问题,这并不是处理文件的最佳方式。

一般来说,对于文件上传,使用

POST
方法会更好。它确保您的文件安全地到达服务器,并避免尝试将像文件这样的大东西放入像 URL 这样的小空间中的复杂性。如果您决定使用
GET
,您可能需要考虑不同的方法来实现您的目标,例如将文件临时存储在服务器上并通过 URL 传递对这些文件的引用。


0
投票

那是因为 GET 请求没有正文,而这就是文件所在的位置

© www.soinside.com 2019 - 2024. All rights reserved.