使用iOS Safari上传PHP图片不提供TMP_NAME

时间:2014-06-25 20:06:43

标签: php html ios safari

我最近在我的网站上发现用户无法在移动设备上上传个人资料图片。所以我从根目录复制了所有必需的HTML和PHP代码。移动配置文件图片的位置也被修改,以便将图片上传到正确的位置。现在,当我测试它并尝试使用Safari for iOS上传个人资料图片时,我收到此错误:

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /home5/bobcatss/public_html/mobile/profile.propic.php on line 18

以下是用户提交的表单:

    <div class="propic"><form method="post" action="profile.propic.php" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
        Upload a profile picture <br><input name="file" type="file" id="file"/><br>
        <input type="submit" value="Upload">
    </form></div>

这是处理图像的脚本:

<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);

include("../config.php");
session_start();

// Where the file is going to be placed 
$target_path = "../propics/";

$filename = $_FILES["file"]["name"];

$limit_size=100000;
$temp = explode(".", $filename);
$extension = end($temp);

$info = getimagesize($_FILES["file"]["tmp_name"]); //Line 18

$allowed_types = array(IMG_GIF, IMG_JPEG, IMG_PNG, IMG_JPG);
if (in_array($info[2], $allowed_types))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    exit;
    }
  else
    {
    if (file_exists("../propics/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "../propics/" . $_FILES["file"]["name"]);

      try {

    //insert into database
    $stmt = $db->prepare('UPDATE users SET propic = :propic WHERE username = :username') ;
    $stmt->execute(array(
        ':propic' => $filename,
        ':username' => $_SESSION["USER"]
    ));

    //redirect to profile page
     header("Location: profile.php?msg=Profile picture upload complete");
    } catch(PDOException $e) {
        echo $e->getMessage();
    }


      }
    }
  }
else
  {
  echo "Invalid file";
  }
?> 

我将图片通过电子邮件发送给自己并尝试从我的笔记本电脑上传,但它给了我同样的错误。

1 个答案:

答案 0 :(得分:0)

我知道这已经过时了,但这也发生在我身上,我已经碰到了这个试图弄清楚发生了什么。如果您使用3G连接,请求可能需要超过MAX_REQUEST_TIMEOUT,因此可能会失败( duplicate here