0

jQuery Form Pluginを使用して ajax ファイルのアップロードを実行しようとしています。そこにある例の 1 つをコピーし、アップロードしようとすると、次のテキストが表示されます。

100%
無効なファイル

コンソールには次のように表示されます。

XHR の読み込みが完了しました:

しかし、何もアップロードされていません。

XAMPP を使用しており、chmod -R 777 を使用してアップロード フォルダーの許可を有効にしています。アップロードしようとしているファイルは .png です。以下はコードです:

index.html

<form action="upload.php" method="post" enctype="multipart/form-data">
   <input type="file" name="myfile"><br>
   <input type="submit" value="Upload File to Server">
</form>
<div class="progress">
   <div class="bar"></div >
   <div class="percent">0%</div >
</div>
<div id="status"></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script src="ajax.js"></script>

ajax.js

$(document).ready(function() {

var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');

$('form').ajaxForm({
    beforeSend: function() {
        status.empty();
        var percentVal = '0%';
        bar.width(percentVal)
        percent.html(percentVal);
    },
    uploadProgress: function(event, position, total, percentComplete) {
        var percentVal = percentComplete + '%';
        bar.width(percentVal)
        percent.html(percentVal);
    },
    success: function() {
        var percentVal = '100%';
        bar.width(percentVal)
        percent.html(percentVal);
    },
    complete: function(xhr) {
        status.html(xhr.responseText);
    }
}); 
});

アップロード.php

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

このphpを他のアップロードに使用しているため、upload.phpではなく拡張子から問題が発生していると思いますが、正常に動作します。

助けてくれてありがとう。

4

2 に答える 2

0

拡張子が問題ない場合は、サイズの問題である可能性があります。スクリプトがチェックしてい$_FILES["file"]["size"] < 20000ます。

必要に応じてそのパラメーターを調整しようと思います。サイズ単位はキロバイトなので、20000KB~20MBです。画像が大きいかどうかを確認してください。

アップロードしているファイルによっては、問題になる可能性も$extension = end(explode(".", $_FILES["file"]["name"]))あります。拡張子があるはずです。

最後に、 の値を確認してください$_FILES["file"]["type"]。MIME タイプのエラーが発生している可能性があります。

于 2013-03-30T12:25:26.013 に答える