2016-05-07 5 views
0

Ich versuche, Bilder auf den Server hochladen.Wie Bilder in Ordnerverzeichnis auf dem Server mit php hochgeladen werden

Auf dem Server des Ordnername: {Foto}

prüfe ich die Berechtigungen für den Ordner und es aktuell 0755.

Wenn ich meinen PHP-Code ausführen, bekomme ich diesen Fehler:

"Fehler beim Hochladen der Datei - Ziel überprüfen ist schreibbar."

Der Beitrag, der auf meine Fragen ähnlich war, ist dies: How to upload photo to my hosting server folder directory

aber ich habe bereits diese Funktionen in meinem Code:

meine PHP-Code hier:

<?php 

$filetmp = $_FILES["file_img"]["tmp_name"]; 
$filename = $_FILES["file_img"]["name"]; 
$filetype = $_FILES["file_img"]["type"]; 
$filesize = $_FILES["file_img"]["size"]; 
$fileinfo = getimagesize($_FILES["file_img"]["tmp_name"]); 
$filewidth = $fileinfo[0]; 
$fileheight = $fileinfo[1]; 
$filepath = "../photo/".$filename; 
$filepath_thumb = "../photo/thumb/".$filename; 




if($_POST['btn_upload']) 
{ 
    $sPhotoFileName = $filename; 
    $nPhotoSize = $filesize; 
    $sTempFileName = $filetmp; 
    chmod($filepath_thumb,0755); 
    chmod($filepath,0755); 

if(file_exists('photo/' . $_FILES['file_img']['name'])){ 
    die('File with that name already exists.'); 
}else{ 

if ($sPhotoFileName) // file uploaded 
{ $aFileNameParts = explode(".", $sPhotoFileName); 
    $sFileExtension = end($aFileNameParts); // part behind last dot 
    if ($sFileExtension != "jpg" 
     && $sFileExtension != "png" 
     && $sFileExtension != "gif") 
    { die ("Choose a JPG for the photo"); 
    } 
} 

if($_FILES['file_img']['error'] > 0){ 
    die('An error ocurred when uploading.'); 
} 

    if ($nPhotoSize == 0) 
    { die ("Sorry. The upload of $sPhotoFileName has failed. 
Search a photo smaller than 300K, using the button."); 
    } 
    if ($nPhotoSize > 30240000000) 
    { die ("Sorry. 
The file $sPhotoFileName is larger than 300K. 
Advice: reduce the photo using a drawing tool."); 
    } 
    // read photo 

    $oTempFile = fopen($sTempFileName, "r"); 
    $sBinaryPhoto = fread($oTempFile, fileSize($sTempFileName)); 
    // Try to read image 
    $nOldErrorReporting = error_reporting(E_ALL & ~(E_WARNING)); // ingore warnings 
    $oSourceImage = imagecreatefromstring($sBinaryPhoto); // try to create image 
    error_reporting($nOldErrorReporting); 
    if (!$oSourceImage) // error, image is not a valid jpg 
    { die ("Sorry. 
It was not possible to read photo $sPhotoFileName. 
Choose another photo in JPG format."); 
    } 
} 
$nWidth = imagesx($oSourceImage); // get original source image width 
     $nHeight = imagesy($oSourceImage); // and height 
     // create small thumbnail 
     $nDestinationWidth = 80; 
     $nDestinationHeight = 60; 
    //$oDestinationImage = imagecreatetruecolor($nDestinationWidth, $nDestinationHeight); 
     $oDestinationImage = imagecreate($nDestinationWidth, $nDestinationHeight); 
    /*$oResult = imagecopyresampled(
     $oDestinationImage, $oSourceImage, 
     0, 0, 0, 0, 
     $nDestinationWidth, $nDestinationHeight, 
     $nWidth, $nHeight); // resize the image 
    */ 
     imagecopyresized($oDestinationImage, $oSourceImage,0, 0, 0, 0,$nDestinationWidth, $nDestinationHeight,$nWidth, $nHeight); // resize the image 
     ob_start(); // Start capturing stdout. 
     imageJPEG($oDestinationImage); // As though output to browser. 
     $sBinaryThumbnail = ob_get_contents(); // the raw jpeg image data. 
     ob_end_clean(); // Dump the stdout so it does not screw other output. 

    // attempt insert query execution 
    $sql = "INSERT INTO UploadImg (img_name, img_path, img_type) VALUES ('$sPhotoFileName', '$filepath', '$filetype')"; 
     if(mysqli_query($link, $sql)){ 
        echo "Records added successfully."; 
       } else{ 
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
       } 


    if(!move_uploaded_file($_FILES["file_img"]["tmp_name"],"../photo/".$_FILES["file_img"]["name"])){ 
      die('Error uploading file - check destination is writeable.'); 
     echo "Error Code: " .$_FILES["file_img"]["name"] . "<br>"; 
    }else{ 



    $sBinaryThumbnail = addslashes($sBinaryThumbnail); 
    $oDatabase = $link; 
    mysqli_select_db("upload", $oDatabase); 
    $sQuery = "insert into Uploadimg (thumbnail) VALUES ('$sBinaryThumbnail')"; 
    echo $sQuery; 
    mysqli_query($sQuery, $oDatabase); 
    die('File uploaded successfully.'); 
    mysqli_close($link); 

    } 
} 
    ?> 

Nun lese ich ein Artikel sagen, dass selbst wenn Ihre Ordner-Berechtigung eingerichtet ist, alle drei lesen, schreiben und auf allen drei Ebenen ausgeführt werden. Der Code kann sie immer noch nicht lesen, abhängig von den Einstellungen auf dem Server.

So bin ich verwirrt und auf der Suche nach Klärung. Bitte hilf mir?

+0

Ich rate aber versuchen '$ filepath =" Foto/".$ filename; ' – RiggsFolly

+0

@RiggsFolly Ich habe das auch versucht. Es hat nicht funktioniert – Kashad

Antwort

0

Sie können das Bild mit codierten Binärdaten hochladen und die Datei mit dem Bildformat auf dem Server speichern.

0

755 bedeutet, dass es nicht weltweit beschreibbar ist. Sie können es beschreibbar und ausführbar mit 777.

Dies ist immer noch anfällig, da jeder mit Zugriff auf Ihren Server os in den Ordner schreiben kann, so sollten Sie wahrscheinlich nur den Webserver-Benutzer den Besitzer des Ordners und halten Sie die Berechtigungen wie sie jetzt sind. Wenn Sie Apache ausführen, ist der Benutzer normalerweise www-data oder apache.

+0

es ist ein Server an meiner Universität, ich benutze die FTP-Anwendung WinScp, um mich am Server anzumelden, um meine Webseiten zu hosten – Kashad

0

ich es herauszufinden, musst du die GID und UID Berechtigungen filepermission

Die eingestellte Gruppenidentifikation GID der Besitzer alle Anwendungen ausführen können, lesen, schreiben und in den Ordner ziehen.

Das gleiche gilt für die Benutzerkennung UID. Das Problem ist, dass Ihr Ordner für Fremde weit offen ist, um es zu manipulieren, aber es funktioniert.

Meine Bilder werden in den Ordner hochgeladen. Sag mir, was denkst du?

0

Zuerst in der php.ini setzen

file_uploads = On 

nächstes ein HTML-Formular erstellen, die Benutzern erlauben, die Bilddatei sie hochladen möchten, wählen:

<form action="upload.php" method="post" enctype="multipart/form-data"> 
Select image to upload: 
<input type="file" name="fileToUpload" id="fileToUpload"> 
<input type="submit" value="Upload Image" name="submit"> 

Vergewissern Sie sich, dass die Form uses method = "post" Dann verwenden Sie den PHP-Code unten, um Bild hochzuladen

<?php 
 
$target_dir = "uploads/"; 
 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
 
$uploadOk = 1; 
 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
 
// Check if image file is a actual image or fake image 
 
if(isset($_POST["submit"])) { 
 
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
 
    if($check !== false) { 
 
     echo "File is an image - " . $check["mime"] . "."; 
 
     $uploadOk = 1; 
 
    } else { 
 
     echo "File is not an image."; 
 
     $uploadOk = 0; 
 
    } 
 
} 
 
?>

Verwandte Themen