2012-07-19 101 views
3

我设法在浏览器上显示图像,但无法使用imagejpeg保存它(我没有看到保存在服务器中的任何图像)。我一直在尝试几个小时,并通过使用is_writable测试了该文件夹,如本文中提到的其他人PHP imagejpeg save file doesn't work所述。 但它仍然无法正常工作,并且在Chrome浏览器上,除了损坏的图标图标,我没有看到任何错误,但在IE上显示如下错误: “警告:imagejpeg()[function.imagejpeg]:无法打开“该文件不可写imagejpeg保存文件不起作用

这是我的代码。

header('Content-type: image/jpeg'); 
$filename = 'little.jpg'; 
$im = imagecreatefromjpeg($filename); 
imagefilter($im, IMG_FILTER_CONTRAST,$_POST["amount"]); 

imagejpeg($im,"test.jpg"); 

imagedestroy($im); 

if (is_writable('test.jpg')) { 
    echo 'The file is writable'; 
} else { 
    echo 'The file is not writable'; 
} 

任何人都可以帮忙吗?谢谢。 P.S:我也想在浏览器上显示图像并同时保存图像。 imagejpeg能够做到吗?如果没有,是否有更好的方法来做到这一点?谢谢。

编辑:当我检查我的文件夹是否可写时,它回显'文件是可写的',但是当我检查test.jpg是否可写时,它回显'文件不可写'。

回答

5

该错误表明您的PHP脚本无权写入服务器上的该位置。使用您的FTP软件CHMOD(更改权限)以允许写入您尝试存储这些目录的目录。除非您的虚拟主机已禁用PHP在本地写入文件,否则应该这样做(在这种情况下,您应该与他们交谈并查看可用的选项)。

+0

如何更改权限?但是当我测试它应该写入的文件夹时,它会回显为'它是可写的'。我测试如下:if(is_writable('./')){echo'The file is writable'; } else { echo'文件不可写'; } – 2012-07-19 15:37:12

+0

is_writable()应该指向一个目录,而不是一个文件名字符串......因此无论如何都会混淆在一起。权限在FTP软件中设置,但它们的工作方式不同。您想要查找“权限”或“CHMOD”的内容,并将其设置为755以存储图像的目录。另外,我通常使用完整的服务器路径来存储文件......在大多数情况下,这不是“必需的”,但如果某些事情没有进行到我认为的地步,那么确实会给我更好的调试数据。我使用类似于:$ filename = $ _SERVER ['DOCUMENT_ROOT']。'/ images/test.jpg'; – techtheatre 2012-07-19 15:44:59

+0

thx很多为您的答案。这实际上是服务器问题,我设法解决它,因为你的答案。 – 2012-07-19 17:47:11