【问题标题】:How to upload files with Ajax to php script with XAMPP如何使用 Ajax 将文件上传到使用 XAMPP 的 php 脚本
【发布时间】:2015-10-23 19:08:13
【问题描述】:

我在过去 3 小时内尝试了所有建议的解决方案,但没有一个对我有用。请记住,我对 ajax 很陌生。

这是我的 ajax 代码:

 var formData = new FormData();
formData.append('file', $('#commercialAnimation')[0].files[0]);


$.ajax({

url : 'includes/upload.php',
   type : 'POST',
   data : formData,
   processData: false,  // tell jQuery not to process the data
   contentType: false,  // tell jQuery not to set contentType
   success : function(data) {
       console.log(data);
       alert(data);
   }
 });

这是一张表单(它是最后一个默认禁用的表单属性):

<label id="uploadAnimation">Upload your file:</label>
<input type="file" id="myfile" disabled>

这里是应该检索这个文件的 php 类:

include 'db_connector.php';
$fileName = $_FILES['file']['name'];
$fileType = $_FILES['file']['type'];
$fileError = $_FILES['file']['error'];
$fileContent = file_get_contents($_FILES['file']['tmp_name']);

if($fileError == UPLOAD_ERR_OK){
//file uploaded
}else{
//error while uploading

  echo json_encode(array(
           'error' => true,
           'message' => $message
        ));
}

当我尝试将消息记录到单独的文件中时,php 代码似乎正在工作,但我在任何 xampp 文件夹中都找不到该文件。 此外,来自 ajax 的 alert(data); 不显示任何值。

【问题讨论】:

  • 在成功回调中你看到console.log(data) 输出了吗?
  • 我看到了弹出窗口,但它是空的
  • $fileName = $_FILES['file']['name'];$fileType = $_FILES['file']['type']; 存储正确的文件名和类型
  • 那么...您是否希望在成功回调中注销时数据为 JSON?
  • 感谢亚当的建议!我刚刚用echo json_encode(array( 'error' =&gt; true,'message' =&gt; "something in return")); 更新了我的代码,它现在显示在弹出窗口中,但我仍然找不到上传的文件。

标签: php ajax upload xampp


【解决方案1】:

您应该首先通过调用 move_uploaded_file 将文件移动到某个文件夹:

   if ($fileError == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES['file']['tmp_name'];
        $name = $_FILES['file']['name'];
        move_uploaded_file($tmp_name, "$your_uploads_dir/$name");
    }

【讨论】:

  • 我收到了这个错误:&lt;b&gt;Warning&lt;/b&gt;: move_uploaded_file(tmp/home-cat.jpg): failed to open stream: No such file or directory in &lt;b&gt;D:\xampp\htdocs\biz\pages\includes\upload.php&lt;/b&gt; on line &lt;b&gt;15&lt;/b&gt;&lt;br /&gt; &lt;br /&gt; &lt;b&gt;Warning&lt;/b&gt;: move_uploaded_file(): Unable to move 'D:\xampp\tmp\php54A.tmp' to 'tmp/home-cat.jpg' in &lt;b&gt;D:\xampp\htdocs\biz\pages\includes\upload.php&lt;/b&gt; on line &lt;b&gt;15&lt;/b&gt;&lt;br /&gt; 第 15 行是:move_uploaded_file($tmp_name, "tmp/$name");
  • 那是因为 'tmp/home-cat.jpg' 不是一个有效的目录。您需要指定从驱动器号到服务器可访问目录的完整路径。在站点的文档根目录中创建一个文件夹并指向它。喜欢 D:\xampp\htdocs\biz\uploads\home-cat.jpg
  • 有效!!太感谢了!你是最棒的安东!
猜你喜欢
  • 2011-12-05
  • 2016-09-29
  • 1970-01-01
  • 2016-08-29
  • 2013-03-02
  • 2011-06-29
  • 2016-04-05
  • 2014-11-26
  • 1970-01-01
相关资源
最近更新 更多