PHP上传和MySQL插入后的白色空图像

PHP上传和MySQL插入后的白色空图像,php,mysql,image,upload,ftp,Php,Mysql,Image,Upload,Ftp,我已经创建了一个PHP和MySQL脚本,它成功地通过PHP将提交的图像上传到我服务器上的一个文件夹中,然后将带有扩展名的文件名添加到我的MySQL数据库中 使用FTP程序,我可以在服务器上的正确文件夹中看到提交的图像及其正确的文件大小。但是,当我在浏览器中键入新上载图像()的文件路径时,会得到一个空白页面。另外,当我尝试将图像导入到网站时,什么也没有显示 但是,当我通过FTP程序将图像重新下载到计算机上时,我可以看到图像完全正常。我错过了什么 我的代码摘录如下: <?php //

我已经创建了一个PHP和MySQL脚本,它成功地通过PHP将提交的图像上传到我服务器上的一个文件夹中,然后将带有扩展名的文件名添加到我的MySQL数据库中

使用FTP程序,我可以在服务器上的正确文件夹中看到提交的图像及其正确的文件大小。但是,当我在浏览器中键入新上载图像()的文件路径时,会得到一个空白页面。另外,当我尝试将图像导入到网站时,什么也没有显示

但是,当我通过FTP程序将图像重新下载到计算机上时,我可以看到图像完全正常。我错过了什么

我的代码摘录如下:

    <?php
 // getting current post id and slug
 $pid = $_POST['pid'];
 $slug = $_POST['slug'];

 //This is the directory where images will be saved 
 $target = '../company/'.$slug.'/images/'; 
 $target = $target . basename( $_FILES['image']['name']); 

 //This gets all the other information from the form 
 $pic = ($_FILES['image']['name']); 
 $fileTmpLoc = ($_FILES["image"]["tmp_name"]);

 $extract = explode(".", $pic);
 $fileExt = end($extract);
 list($width, $height) = getimagesize($fileTmpLoc);
    if($width < 10 || $height < 10){
        header("location: ../message.php?msg=ERROR: That image has no dimensions");
        exit(); 
    }
 $rename = rand(100000000000,999999999999).".".$fileExt;

// check for correct filetype
if (!preg_match("/\.(gif|jpg|png)$/i", $pic) ) {
        header("location: ../message.php?msg=ERROR: incorrect filetype");
        exit();
    }



 include_once "../database-connect.php";

 //Writes the information to the database 
 mysqli_query($dbconnection,"UPDATE companies SET picture='$rename' WHERE ID='$pid'") ; 

 //Writes the photo to the server 
 if(move_uploaded_file($fileTmpLoc, "../company/'.$slug.'/images/$rename")) 
 { 

 .... etc

当您尝试链接到图像或尝试打开图像时,路径可能与您想象的不同

请注意,这看起来非常错误:

if(move_uploaded_file($fileTmpLoc, "../company/'.$slug.'/images/$rename")) 
这将在路径中添加两个引号和两个点,因此如果
$slug
某个公司
,则路径将为:

/company/'.some_company.'/images/123456789.jpg
也许您在ftp程序中没有看到或没有注意到这一点


还请注意,您有一个sql注入问题,您应该切换到带有绑定变量的预处理语句。

问题实际上是URL输出结构。正如杰罗恩所建议的那样:

if(move_uploaded_file($fileTmpLoc, "../images/$rename"))

现在可以正常工作了

我能想到的唯一一件事是,您可能没有用PHP加载
GD
库。或者,您可能使用CMS,并且它有自己的htaccess重写规则,这些规则没有正确使用
-f
标志,因此不会忽略指令谢谢,jeroen将对此进行调查。但是,我看到FTP客户端的图像位于正确的位置,如果我从FTP客户端复制路径url并将其粘贴到浏览器中(url是正确的),则它只是空白…@rainerbrunotte奇怪,但可能FTP客户端隐藏了特殊字符。谢谢,jeroen,我编辑了url,现在它工作正常:)