我曾经通过将图像上传到数据库来做到这一点,但后来才知道错误的方法,因为当你试图导出数据库时,如果你将它从localhost移动到服务器,图像就不会出现:(所以任何人,我在这里的脚本是获取图像,裁剪它,给它一个随机的名称,并将其放入gallery文件夹。但由于某种原因它不工作,我无法弄清楚.. 如果有人可以帮助我
感谢
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();
}
顺便说一下,上传图片后如何阅读文件夹以显示图像?
答案 0 :(得分:1)
首先,您的服务器上真的有/uploads/gallery/
吗?
请注意,此处的路径以斜杠(它是“绝对”路径)开头,这意味着uploads
必须位于文件系统的根目录。
如果您的uploads
目录不在文件系统的根目录下,则应删除第一个斜杠;和/或使用相对路径;和/或使用指向真实目录的绝对路径。
也许你的意思是这样的:
dirname(__FILE__) . '/uploads/gallery/' . $name
上传图像后,您希望通过HTTP访问它们吗?
如果是,您的uploads/gallery/
目录必须位于为您的服务器配置的文档根目录中;并且您将能够使用http://www.example.com/.../uploads/gallery/12345.png
作为旁注:您对imagepng
的第二次调用应该创建一个包含图像的文件;它不应该输出任何东西。
相反,第一个应该显示图像......但是,如果你想创建一个文件,为什么还要使用这个呢?
并且:如果你删除第一个(无用?)调用,你也可以删除输出缓冲功能。 (无论如何,你没有使用缓冲的信息,似乎......所以第一次调用imagepng是没用的,我会说?)
如果这没有多大帮助......这是什么意思:
但由于某些原因它不起作用, 我无法弄清楚..
例如,您有任何错误吗?
您可能想要使用它:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
在脚本的开头显示它们,顺便说一句:错误消息可能很有用(如果你有一些你不理解的,你可以编辑你的问题来添加它们:它们可能对你很有帮助)
这可能无法解决您的问题......
但我希望它会给你一些有用的指示......
答案 1 :(得分:0)