我最近在我的网站上发现用户无法在移动设备上上传个人资料图片。所以我从根目录复制了所有必需的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";
}
?>
我将图片通过电子邮件发送给自己并尝试从我的笔记本电脑上传,但它给了我同样的错误。
答案 0 :(得分:0)
我知道这已经过时了,但这也发生在我身上,我已经碰到了这个试图弄清楚发生了什么。如果您使用3G连接,请求可能需要超过MAX_REQUEST_TIMEOUT
,因此可能会失败( duplicate here )