2014-04-03 225 views
0

我有以下代码 [x]PHP图片上传问题?

<form action="#" method="get" enctype="multipart/form-data"> 
    <label for="file">Filename:</label><br /> 
    <input type="text" name="type" placeholder="Type"><br /> 
    <input type="file" name="file"><br /> 
    <input type="submit" name="submit" value="Submit"> 
    </form> 
<? 
if($_GET['type']!="") { 
    $type = $_GET['type']; 
    $allowedExts = array("gif", "jpeg", "jpg", "png"); 
    if($_FILES["file"]["type"] == "image/gif") { 
     $encryptfile = md5(substr($_FILES["file"]["name"], 0, -4)); 
     $filename = $encryptfile. ".gif"; 
    } else if($_FILES["file"]["type"] == "image/jpeg") { 
     $encryptfile = md5(substr($_FILES["file"]["name"], 0, -5)); 
     $filename = $encryptfile. ".jpeg"; 
    } else if($_FILES["file"]["type"] == "image/jpg") { 
     $encryptfile = md5(substr($_FILES["file"]["name"], 0, -4)); 
     $filename = $encryptfile. ".jpg"; 
    } else if($_FILES["file"]["type"] == "image/pjpeg") { 
     $encryptfile = md5(substr($_FILES["file"]["name"], 0, -6)); 
     $filename = $encryptfile. ".pjpeg"; 
    } else if($_FILES["file"]["type"] == "image/x-png") { 
     $encryptfile = md5(substr($_FILES["file"]["name"], 0, -6)); 
     $filename = $encryptfile. ".x-png"; 
    } else if($_FILES["file"]["type"] == "image/png") { 
     $encryptfile = md5(substr($_FILES["file"]["name"], 0, -4)); 
     $filename = $encryptfile. ".png"; 
    } 
    $temp = explode(".", $filename); 
    $extension = end($temp); 
    if ((($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/jpg") 
    || ($_FILES["file"]["type"] == "image/pjpeg") 
    || ($_FILES["file"]["type"] == "image/x-png") 
    || ($_FILES["file"]["type"] == "image/png")) 
    && ($_FILES["file"]["size"] < 2097152) 
    && in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) { 
     echo '<a class="title" href="./upload.php">' .$_FILES["file"]["error"]. '</a>'; 
    } else { 
     echo "Upload: " . $filename . "<br>"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
     echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 
     if (!($stmt = $con->prepare("INSERT INTO `cat_images` (`title`,`path`) VALUES (?,?)")) || !is_object($stmt)) { 
      die("Error preparing: (" .$con->errno . ") " . $con->error); 
     } 
     $stmt->bind_param('ss', $type, $filename); 
     if($stmt->execute()) { 
      move_uploaded_file($_FILES["file"]["tmp_name"], "./assets/uploads" . $filename); 
      echo "Stored in: " . "./assets/uploads/" . $filename . "<br />"; 
      echo '<a href="./">Home</a>'; 
     } else { 
      echo 'SQL command could not be Executed, Contact a Staff Member'; 
      echo '<a href="./upload.php">Try Again</a>'; 
     } 
     $stmt->close(); 
    } 
    } 
} 
?> 

我没有得到任何来自网页或服务器的响应,所以我不知道是什么问题。 你们有没有人知道解决方案?

我正在尝试制作图片上传表单,但我没有从服务器获取网站响应。

+0

方法应该发布? – Debflav

+0

第一件事'方法=“得到”'方法=“POST”' –

回答

1

从超全局$_FILES你可以阅读下面这句话的PHP文件:

通过HTTP POST方法上传到当前脚本的项目组成的数组。

所以,你应该改变你的method="get"method="post"和检索利用$_POST['type']$_GET['type']

0

我认为问题是在这里...你的代码是...

move_uploaded_file($_FILES["file"]["tmp_name"], "./assets/uploads" . $filename); 

与下面的行替换它

move_uploaded_file($_FILES["file"]["tmp_name"], "/assets/uploads/".$filename); 

确保所有目录的存在是/资产/上传/