2011-12-02 4 views
0

Ok, je suis au point de me tirer les cheveux. J'ai essayé toute la journée pour que cela fonctionne correctement et rien. En ce moment ce que ce script fait est quand vous allez télécharger le fichier il va à la page et il n'y a pas d'image. Je n'ai aucune idée pourquoi ça ne marche pas. Je suis encore nouveau à ce fichier/image. J'ai essayé quelques manières différentes et rien. Voici le code upload.php:problème de téléchargement de fichier dans php

 <?php 
    function dbConnect(){ 
    // Connect to the database 
    $hostname="localhost"; 
    $database="myDatabase"; 
    $mysql_login="myLogin"; 
    $mysql_password="myPassword"; 

    if(!($db=mysql_connect($hostname, $mysql_login, $mysql_password))){ 
     echo"error on connect"; 
    } 
    else{ 
     if(!(mysql_select_db($database,$db))){ 
      echo mysql_error(); 
      echo "<br />error on database connection. Check your settings."; 
     } 
     else{ 
        echo "This is the home page. I have successfully made a connection to my database and everything 
    is working as it should."; 
      } 
    } 
    $aryImages=array("image/jpeg","image/png"); 
    $aryDocs=array("application/msword","application/pdf","video/x-msvideo"); 
    $filename=filenameSafe($_FILES['upload']['name']); 
    $fileType=$_FILES["upload"]["type"]; 
    if (in_array($_FILES["upload"]["type"],$aryImages)){ 
     createThumb($fileType,$_FILES['upload']['tmp_name'],$filename,100,100); 
    } 
    elseif (in_array($_FILES["upload"]["type"],$aryDocs)){ 
     move_uploaded_file($_FILES['upload']['tmp_name'], 
    "/home/valerie2/public_html/elinkswap/imagefolder/".$filename); 
     $aryColumns=array("sessionID"=>$curSess,"fileName"=>$filename,"fileType"=>$fileType,"thumbFileName"=>$thumbFilename,"dateCreated"=>date('Y-m-d H:i:s')); 
     dbInsert($filename,$aryColumns,$_FILES["upload"]["type"]); 
    } 
    else{ 

     echo "File Uploaded"; 
     } 
    } 
    function createThumb($type,$tmpname,$filename,$new_w,$new_h){ 
     $thumbFilename="tmb-".$filename; 
     echo $type; 
     echo "<br>".$tmpname; 
     if (is_numeric(strpos($type,"jpeg"))){ 
      $src_img=imagecreatefromjpeg($tmpname); 
     } 
     if (is_numeric(strpos($type,"png"))){ 
      $src_img=imagecreatefrompng($tmpname); 
     } 
     $old_x=imageSX($src_img); 
     $old_y=imageSY($src_img); 
     if ($old_x > $old_y) { 
      $thumb_w=$new_w; 
      $thumb_h=$old_y*($new_h/$old_x); 
     } 
     if ($old_x < $old_y) { 
      $thumb_w=$old_x*($new_w/$old_y); 
      $thumb_h=$new_h; 
     } 
     if ($old_x == $old_y) { 
      $thumb_w=$new_w; 
      $thumb_h=$new_h; 
     } 
     $dst_img=imagecreatetruecolor($thumb_w,$thumb_h); 
     imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); 
     if (is_numeric(strpos($type,"jpeg"))){ 
      imagejpeg($dst_img,"/home/valerie2/public_html/elinkswap/upload/".$thumbFilename); 
      imagejpeg($src_img,"/home/valerie2/public_html/elinkswap/upload/".$filename); 
     } 
     if (is_numeric(strpos($type,"png"))){ 
      imagepng($dst_img,"/home/valerie2/public_html/elinkswap/upload/".$thumbFilename); 
      imagepng($src_img,"/home/valerie2/public_html/elinkswap/upload/".$filename); 
     } 
     imagedestroy($dst_img); 
     imagedestroy($src_img); 
     dbInsert($filename,$thumbFilename,$type); 
    } 
    function filenameSafe($filename) { 
     $temp = $filename; 
     // Lower case 
     $temp = strtolower($temp); 
     // Replace spaces with a ’_’ 
     $temp = str_replace(" ", "_", $temp); 
     // Loop through string 
     $result = ""; 
     for ($i=0; $i<strlen($temp); $i++) { 
      if (preg_match('([0-9]|[a-z]|_|.)', $temp[$i])) { 
       $result = $result.$temp[$i]; 
      } 
     } 
     dbConnect(); 
     $SQL="SELECT fileID FROM upload WHERE fileName='".$result."'"; 
     //echo $SQL; 
     $rs=mysql_query($SQL); 
     echo mysql_num_rows($rs); 
     if(mysql_num_rows($rs)!=0){ 
      $extension=strrchr($result,'.'); 
      $result=str_replace($extension,time(),$result); 
      $result=$result.$extension; 
     } 
     return $result; 
    } 

    function dbInsert($filename,$thumbFilename,$type){ 
     dbConnect(); 
     $SQL="INSERT Into upload (fileName,thumbFileName,fileType) values('".$filename."','".$thumbFilename."','".$type."')"; 
     //echo $SQL; 
     mysql_query($SQL); 
    } 
    ?> 

Et voici mon code index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>File Upload</title> 
<link href="styles.css" type="text/css" rel="stylesheet" /> 
</head> 
<body> 


<form enctype="multipart/form-data" action="upload.php" method="post"> 

Select File: <input type="file" name="upload"> 
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/> 
<input name="Submit" type="submit" value="Upload File"> 

</form> 
</html> 

Ces deux fichiers sont à l'intérieur d'un nom de dossier imagefolder uniquement avec un dossier appelé téléchargement. J'ai lu tant de choses sur le fichier/image et tant de vidéos mais je ne comprends toujours pas pourquoi l'image n'apparaîtra pas. J'ai même essayé de faire un autre chemin mais il ne cessait de me dire le type de fichier invaild.

+0

Quelle est l'erreur msg? – Sedz

+0

Il n'y a pas un message d'erreur mais il n'y a pas une image qui apparaît que j'essaye de télécharger. La page est blanche. – sn1984

+0

Qu'est-ce que votre système d'exploitation? – Sedz

Répondre

1

Votre upload.php définit de nombreuses fonctions, mais sont-elles réellement appelées quelque part? Certains s'appellent l'un l'autre, mais aucun d'eux ne semble s'appeler du code "toujours exécuté". Vous devez ajouter du code qui est exécuté dans tous les cas lors de l'exécution de ce fichier php, par ex. après votre fonction dbInsert:

function dbInsert($filename,$thumbFilename,$type){ 
    dbConnect(); 
    $SQL="INSERT Into upload (fileName,thumbFileName,fileType) values('".$filename."','".$thumbFilename."','".$type."')"; 
    //echo $SQL; 
    mysql_query($SQL); 
} 
dbConnect(); 

Mais d'un coup d'œil rapide, je could't vraiment déterminer si dbConnect est vraiment le bon fonctionnement d'appeler - vos fonctions semblent un peu au hasard reliés entre eux; pourquoi est dbConnect appelant createThumb, lorsque createThumb appelle dbInsert, qui à son tour appelle à nouveau dbConnect? Cela va créer une boucle de récursion infinie.

Si j'étais vous, je commencerais sans aucune fonction pour tester le comportement voulu. Vous pouvez toujours extraire les fonctionnalités des fonctions plus tard.

0

Il semble y avoir beaucoup de fonctions, mais elles ne sont jamais appelées, donc rien ne se passera je suppose.

0

Vérifiez la permission de dossier et simplifier votre code et essayer de faire écho quelque chose dans chaque fonction afin de déboguer et de déterminer où est-il arrête alors nous pouvons vous aider plus

Mais son plus probablement un problème d'autorisation

+0

Eh bien, j'ai donné la permission du dossier. – sn1984

+0

Démarrer le débogage de chaque fcn – Sedz

Questions connexes