base64 Pic上传和裁剪情况PHP

时间:2012-10-20 01:53:40

标签: php javascript base64

我正在尝试从移动设备上传照片到服务器。我们正在使用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等......?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

在更明亮的音符上,确保使用正确的扩展名保存文件;如果您已使用正确的扩展程序进行保存,则可能会出现应用程序的编码问题。

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