0

我曾经通过将图像上传到数据库来做到这一点,但后来知道它的方法是错误的,因为当你尝试导出数据库时,如果你将它从本地主机移动到服务器,图像不会出现:(所以任何人,我有的脚本这是获取图像,裁剪它,给它一个随机名称并将其放入图库文件夹。但由于某种原因它不起作用,我无法弄清楚..如果有人可以帮助我

谢谢

if(isset($_POST['submit']) && $_FILES['galleryimg']['size'] > 0) {


$tmpname = $_FILES['galleryimg']['tmp_name'];
$imgsize = $security->secure($_FILES['galleryimg']['size']);
$imgtype = $security->secure($_FILES['galleryimg']['type']);


//crop image
$canvas = imagecreatetruecolor(219,127);
$imgattrib = getimagesize($tmpname);
$source = imagecreatefromjpeg($tmpname);
imagecopyresized($canvas,$source,0,0,0,0,219,127,$imgattrib[0],$imgattrib[1]);
$name = rand(1234,43211234).".png";



ob_start();
imagepng($canvas);
//$image = ob_get_contents();
imagepng($canvas,'/uploads/gallery/'.$name);
ob_end_clean();

}

顺便说一句,上传图像后,我如何读取文件夹以显示图像?

4

2 回答 2

1

首先,/uploads/gallery/你的服务器上真的有一个吗?

请注意,此处的路径以斜杠开头(它是“绝对”路径),这意味着uploads必须位于文件系统的根目录。

如果您的uploads目录不在文件系统的根目录下,则应删除第一个斜杠;和/或使用相对路径;和/或使用指向真实目录的绝对路径。

也许你的意思是这样的:

dirname(__FILE__) . '/uploads/gallery/' . $name

dirname__FILE__


上传图片后,您希望它们可以通过 HTTP 访问吗?

如果是,您的uploads/gallery/目录必须位于为您的服务器配置的文档根目录中;您将能够使用诸如http://www.example.com/.../uploads/gallery/12345.png之类的 URL 访问图像


作为旁注:您的第二次调用imagepng应该创建一个包含图像的文件;它不应该输出任何东西。

相反,第一个应该显示图像......但是如果你想创建一个文件,你为什么还要使用这个呢?
并且:如果您删除第一个(无用的?)调用,您也可以删除输出缓冲功能。(无论如何,您似乎没有使用缓冲的信息......所以第一次调用 imagepng 是没用的,我会说?)


如果这没有多大帮助......你是什么意思:

但由于某种原因它不起作用,我无法弄清楚..

例如,您有任何错误吗?

你可能想用这个:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

在脚本的开头,以便显示它们,顺便说一句:错误消息可能很有用(如果您有一些不明白的地方,您可以编辑您的问题以添加它们:它们可能对您有用)


这可能不会解决你的问题......
但我希望它会给你一些有用的指示......

祝你好运 !

于 2009-08-13T23:18:12.013 回答
0

ob_end_clean 丢弃您缓冲的信息。

http://us3.php.net/ob_end_clean

尝试这个

echo ob_get_clean();
于 2009-08-13T23:12:59.903 回答