PHP手机摄像头上传不起作用



我已经做了几天了,在这里查看了其他人以前的问题/答案,但我还没有找到答案。这背后的想法是允许移动相机上传照片、压缩照片、存储照片,并将文件名记录在数据库中。

如果我在我的电脑上使用这个代码,它可以工作,没有问题。如果我使用手机摄像头,我要么页面不工作-错误500,要么表单显示它已经上传,我检查了一下,数据库有名称,但在服务器上,"找不到文件"。我也尝试过从手机上传一张保存的图片,结果也是如此。

以下是PHP脚本:

$db = new PDO('mysql:host=host;dbname=db', 'user', 'pass');
function compress($source, $destination, $quality) {
$info = getimagesize($source);
if($info['mime'] == 'image/jpeg') {
$image = imagecreatefromjpeg($source);
} else if($info['mime'] == 'image/gif') {
$image = imagecreatefromgif($source);
} else if($info['mime'] == 'image/png') {
$image = imagecreatefrompng($source);
}
imagejpeg($image, $destination, $quality);
return $destination;
}
if(isset($_POST['submit'])) {
$target = $_SERVER["DOCUMENT_ROOT"].'/images/uploads/'
$target = $target . basename($_FILES['file']['name']);
$photo_name = ($_FILES['file']['name']);
$imageFileType = pathinfo($target, PATHINFO_EXTENSION);
$file = $photo_name;
$query = "INSERT INTO jrtwall_images (imgurl) VALUES ('$file')";
$result = $db->query($query);
if($result && compress($_FILES['file']['tmp_name'], $target, 50)) {
header("Location: /?pid=1&success=1");
exit();
} else {
header("Location: /?pid=1&error=1");
exit();
}
}

这是我的HTML:

<form action="core/engines/upload-v2.eng.php" method="post" autocomplete="off" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="submit" value="Upload &amp; Send" />
</form>

print_r($_FILES['file']);显示:

Array([name] => 15316729868972697354228305840469.jpg [type] => image/jpeg [tmp_name] => /tmp/phpAvNZZF [error] => 0 [size] => 4649129)

如有任何帮助,我们将不胜感激。我运行的是PHP 5.6。

我尝试过的东西:

  • 启用跨原点
  • 增加php.ini中Upload和Post的大小限制
  • 上传时没有压缩功能(有效,但我需要压缩(
  • 将"capture"one_answers"image/*"添加到表单的输入中
  • 正在检查$_FILES阵列是否存在错误,无/错误0
  • 将$db(连接(添加到Compress方法
  • 在XAMPP上尝试了代码,并在将$target更改为$target = $_SERVER["DOCUMENT_ROOT"].'/images/uploads/';后工作,然而,一旦上传到实时服务器,调整就不起作用,仍然得到错误500。(等待技术支持向我发送服务器错误日志的副本,因为我无法通过FTP或cPanel访问它(
  • 尝试升级到PHP 7、7.1、7.2。运气不好,所以又回到了PHP 5.6

我已经修复了。当我说我更改了发布和上传大小时,我没有考虑增加memory_limit。。。

答案是将memory_limit更改为128M。

我通过更改服务器的配置来解决这个问题,请相对更改。

post_max_size = 20M
memory_limit = 2048M

最新更新