2012-10-20 115 views
1

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

这就是我要上当前

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

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

在一个更加明显的方面,请确保文件以正确的扩展名保存;如果您已经使用正确的扩展名保存,则应用程序可能会遇到编码问题。

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

+0

是应用程序使用的编码方法。谢谢! – nathansizemore