1

我正在尝试将图片从移动设备上传到服务器。我们正在使用 PhoneGap (Javascript) 构建,因此我们将其转换为字符串以便将其发送到服务器。我收到后遇到问题,将其转回可读的图像文件。简而言之,我需要将一个字符串和一个文件名发送给我,对其进行解码,将其转换为 .png,然后将其裁剪为圆形图像。

这就是我目前正在做的事情

if (isset($_POST['file'])) 
{
    //Result variable
    $result = false;

    $pic = base64_decode($_POST['file']);
    $filename = $_POST['filename'];

    if (strlen($pic) > 9 )
    {
        $fh = fopen("/var/www/pics/events/".$filename, 'w') or die("can't open file");
        fwrite($fh, $pic);
        fclose($fh);
    }
}

我想我可以让其余的代码工作,如果我能弄清楚我在这里做错了什么,导致它不能正确保存为图像文件?该文件正确上传,但它没有扩展名,当我在浏览器中指向它时,它看起来应该是一个图像文件,但从不显示图像。当我直接到它的位置时,我会得到那个带有彩色形状的小破图片图标。

我是否需要知道在此过程中发送的图像类型是什么?如何知道它是 .gif、.jpg/jpeg、.png 等...?

提前感谢您的帮助!

弥敦道

4

1 回答 1

1

出于安全原因,您应该清理文件名以防止目录遍历。

更重要的是,确保文件以正确的扩展名保存;如果您已经使用正确的扩展名保存,您可能会遇到来自应用程序的编码问题。

如果上述两种情况都不是,请确保您的字符串大小不超过 php.ini 中的最大 POST 大小限制;如果是这种情况,请增加大小限制。

于 2012-10-20T02:14:21.243 回答