0

PHPを使用して画像をアップロードするというこの問題が発生しています。すべての画像はJPEGです

カメラとiPhoneからデスクトップにいくつかのファイルをコピーしています。すべてのファイルは800Kbから6MBまでさまざまなサイズです。

カメラまたはiPhoneからの上記のファイルは、MAX_UPLOAD_SIZEが原因ではなく、サーバーにアップロードされます。これは、すでに30M(30MB)に構成されているためです。

次に、これらの画像のうち2つ(サイズ5.6MBと1.9MB)をPhotoshopで開き、Web画像用に保存しました。この画像サイズは両方とも同じままでした(私がそれらを同じままにするように強制したため)。このフォトショップに最適化された画像をサーバーにアップロードしようとすると、正常にアップロードされます。ここで何が問題なのか理解できません。iPhoneとカメラからの画像に何らかの制限がありますか、それともアップロードを制限している特定のヘッダーがありますか?アップロードする前に画像をデスクトップにコピーし、デバイスフォルダから直接アップロードしようとはしなかったことに注意してください。

ファイルのhtmlおよびphpコーディングは次のとおりです。

<?php
if (isset($_POST['submit'])){
    $allowedExts = array("jpg", "jpeg", "gif", "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/pjpeg"))
&& 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("image_test/" . $_FILES["file"]["name"]))
  {
    echo $_FILES["file"]["name"] . " already exists. ";
  }
else
  {
    move_uploaded_file($_FILES["file"]["tmp_name"],
    "image_test/" . $_FILES["file"]["name"]);
    echo "Stored in: " . "image_test/" . $_FILES["file"]["name"];
  }
}
  }
  else
 {
   echo "Invalid file";
 }
 } 
?>

<html>
<body>

<form action="upload_test.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Upload" />
</form>

</body>
</html>

誰かがこの問題に対する答えやヒントを持っているなら、私はそれを大いに感謝します。

敬具

4

2 に答える 2

0

答えを見つけ、上記のコードの上部を次のように変更しました。

<?php
if (isset($_POST['submit'])){
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")))
{

基本的に、それはend()によるものでした。ローカルホストサーバーで同じスクリプトを使用しようとしましたが、次のようなエラーが発生し始めました。

厳格な基準:9行目のC:\ xampp \ htdocs \ search \ php \ loader\csvFileUploader1.phpで参照によって変数のみを渡す必要があります

これは私をそれについての研究に導き、それは私にそれが4行目の終了関数によるものであるという解決策を与えました。

私を助けてくれてありがとう。コメントありがとうございます。

于 2012-08-25T18:34:30.207 に答える
0

注意!ファイル名はにある可能性がありますUPPERCASE

交換してみてください

 $extension = end(explode(".", $_FILES["file"]["name"]));

 $extension = strtolower(end(explode(".", $_FILES["file"]["name"])));

よろしくお願いします。

于 2012-08-28T00:11:50.303 に答える