2016-09-01 2 views
0

Ich habe ein Upload-Skript gefunden, das perfekt für die Bedürfnisse ist, da es Bilder here umbenennt.Volle URL zum hochgeladenen Bild mit Echo-Anweisung anzeigen

Funktioniert gut, aber muss geändert werden, damit es nach dem Hochladen die vollständige URL zum Bild anzeigt.

Haben in gewissem Umfang funktioniert, stecken aber fest und brauchen Eingabe.

My mod auf die oben genannten Skript:

$url = isset($_SERVER['HTTPS']) ? 'https://' : 'http://'; 
     $url .= $_SERVER['SERVER_NAME']; 
     $url .= $_SERVER['REQUEST_URI']; 

     echo dirname(dirname($url)).$uploadResult; 
     echo "<br />"; 
     echo "<br />"; 
     echo "<a href='$uploadResult' target='_blank'><img src='$uploadResult' alt='picture'></a><br/>"; 
     echo "<br />"; 
     echo "<form><input name='imgcode' size='60' type='text' value='$uploadResult' /></form>"; 
     echo "<br />"; 

Above Ausgänge wie folgt aus:

enter image description here

Das Problem, das ich habe, ist: Notwendigkeit der .. von dem Pfad zu entfernen (../images/01092016211821.gif)

Habe die str_replace-Funktion untersucht und versucht, aber c Annot wird arbeiten.

Möchten Sie auch den vollständigen URL-Pfad im Eingabebereich wiedergeben, um das Kopieren zu vereinfachen.

Vielen Dank im Voraus für die Beratung/Lösung. Hier

ist voll Skript ...

example.php:

<?php 
    if(isset($_POST["Send"])){  // If form is submited 
     require_once("uploadClass.php");  
     $file=$_FILES["fileField"];     // Get file from form 

     $destination="../images/"; 
     if (!file_exists($destination)) {  // If 'destination' folder dosn't exist, create 
      mkdir($destination); 
     } 

     $process=new Upload($destination);  // Set 'destination' as new default destination folder for upload 

     $uploadResult=$process->executeUpload($file); // Attach file to upload process 

     $url = isset($_SERVER['HTTPS']) ? 'https://' : 'http://'; 
     $url .= $_SERVER['SERVER_NAME']; 
     $url .= $_SERVER['REQUEST_URI']; 

     echo dirname(dirname($url)).$uploadResult; 
     echo "<br />"; 
     echo "<br />"; 
     echo "<a href='$uploadResult' target='_blank'><img src='$uploadResult' alt='picture'></a><br/>"; 
     echo "<br />"; 
     echo "<form><input name='imgcode' size='60' type='text' value='{dirname(dirname($url).$uploadresult)}' /></form>"; 
     echo "<br />"; 
     } 
?> 

<form action="?" method="POST" enctype="multipart/form-data"> 
    <table id="dyntable" class="table table-bordered"> 
     <tr> 
      <td> 
       File 
      </td> 
      <td> 
       <input type="file" name="fileField" id="fileField" placeholder=""> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       <center> 
        <button type="submit" name="Send">Send</button> 
        <button type="reset">Reset</button> 
       </center> 
      </td> 
     </tr> 
    </table> 
</form> 

uploadClass.php:

<?php 
    /// Classe d'upload de uploaded_file 
    class Upload{ 
     protected $destination="Img/Uploads/"; //Default destination folder 
     protected $max_file_size=7500000;  //Max file size 
     protected $authorized_extensions=array('png','jpg','gif','bmp','jpeg','pdf','word','txt');  //Authorised file extensions 

     public function __construct($dest=null,$types=null){ 
      $this->setParameters($dest,$types); 
     } 

     // Set general parameters 
     public function setParameters($dest=null,$types=null){ 
      if($dest!=null && $dest!=""){ 
       $this->destination=$dest; 
      } 
      if($types!=null && $types!=""){ 
       $this->authorized_extensions=$type; 
      } 
     } 

     // Return uploaded file path or errorMessages list 
     public function executeUpload($uploaded_file,$destination=null){ 
      if($destination==null || $destination==""){ 
       $destination=$this->destination; 
      } 
      if (!file_exists($destination)) {  // If 'destination' folder dosn't exist, create 
       mkdir($destination); 
      } 

      $i=0; 
      $errorMessage=""; 
      $errorMessage1=""; 
      $errorMessage2=""; 
      if (!empty($uploaded_file)){ //If existing file is really submited 
       //On vérifie si la taille du uploaded_file envoyé est acceptable 
       $file_size = $uploaded_file['size']; 
       if ($file_size > $this->max_file_size) 
       { 
        $errorMessage = "File too heavy. Current max file size is : ".$this->max_file_size; 
        return ""; 
       } 

       //On définit les variables : 
       $extensions_valides = $this->authorized_extensions; //Liste des extensions valides 
       if ($uploaded_file['errorMessage'] > 0) 
       { 
        $i++; 
        $errorMessage = "File transfert failed"; 
       } 

       $extension_upload = strtolower(substr(strrchr($uploaded_file['name'], '.') ,1)); //Get uploaded_file extension 
       if (!in_array($extension_upload,$extensions_valides)) 
       { 
        $i++; 
        $errorMessage2 = "Extension forbidden"; 
       } 
      } 
      //echo $errorMessage2; 

      if ($i == 0) // If any errorMessage have been detected 
      { 
       if (isset($uploaded_file['size'])) 
       { 
        //Move the uploaded_file to the desired place 
        $ico="chaine"; 
        $horodatage=date("dmYHis"); 
        $nomico = str_replace(' ','',$ico).".".$extension_upload; 
        $ico = $destination.str_replace(' ','',$horodatage).".".$extension_upload; 
        move_uploaded_file($uploaded_file['tmp_name'],$ico); 

        return $ico; 
       }else{ 
        return NULL; 
       } 
      }else{ 
       echo "<h3>Upload failed</h3>"; 
       echo "<table><tr><td> <b><u>Cause(s) :</u></b></td></tr><tr><td>"; 
       echo $errorMessage.'<br>'; 
       echo $errorMessage1.'<br>'; 
       echo $errorMessage2.'<br>'; 
       echo "</td></tr></table>"; 
       //return "0"; 
       return NULL; 
      } 
     } 
    } 
?> 

Meine Lösung basierend auf einer Eingabe von @Forbs Antwort:

<?php 
    if(isset($_POST["Send"])){  // If form is submited 
     require_once("uploadClass.php");  
     $file=$_FILES["fileField"];     // Get file from form 

     $destination="../images/"; 
     if (!file_exists($destination)) {  // If 'destination' folder dosn't exist, create 
      mkdir($destination); 
     } 

     $process=new Upload($destination);  // Set 'destination' as new default destination folder for upload 

     $uploadResult=$process->executeUpload($file); // Attach file to upload process 

     $url = isset($_SERVER['HTTPS']) ? 'https://' : 'http://'; 
     $url .= $_SERVER['SERVER_NAME']; 
     $url .= $_SERVER['REQUEST_URI']; 

     if (substr($uploadResult,0,2) == "..") 
     $uploadResult = substr($uploadResult,2); 

     echo dirname(dirname($url)).$uploadResult; 
     echo "<br />"; 
     echo "<br />"; 

     } 
?> 

<form action="?" method="POST" enctype="multipart/form-data"> 
    <table id="dyntable" class="table table-bordered"> 
     <tr> 
      <td> 
       File 
      </td> 
      <td> 
       <input type="file" name="fileField" id="fileField" placeholder=""> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       <center> 
        <button type="submit" name="Send">Send</button> 
        <button type="reset">Reset</button> 
       </center> 
      </td> 
     </tr> 
    </table> 
</form> 

<textarea id="myText" rows="3" cols="80"><?php echo dirname(dirname($url)).$uploadResult; ?></textarea> 

Löst mein Problem gut genug, um das Projekt zu beenden.

+0

Was haben Sie getan, um dies zu erreichen? Können Sie uns bitte Ihren Code zeigen? – tanaydin

+0

@tanaydin mit mir neu zu sein war nicht sicher, ob nur Link zum Upload-Skript oder fügen Sie alles in. Ist Link nicht gut, um Skript zu zeigen @ http://www.phpclasses.org/package/9906-PHP -Validate-und-Prozess-ein-uploaded-Datei-.html – Woody

+0

Meine schlechte @tanaydin Wusste nicht, Benutzer mussten bei phclassesses Website registriert/angemeldet sein. Das gesamte Skript wurde hinzugefügt. – Woody

Antwort

0

1) Entfernen Sie die beiden führenden Zeiträume, wenn sie richtig angezeigt werden?

if (substr($uploadresult,0,2) == "..") 
    $uploadresult = substr($uploadresult,2); 

2), warum nicht den Eingang

Wert ändern = '{dirname (dirname ($ url). $ Uploadresult)}', das zu lösen?

+0

1) Ja, entfernen Sie die zwei Punkte. Entferne sie so, dass sie nicht in der URL erscheinen. Nur nicht positiv, wo Sie Code empfehlen, den Sie empfehlen. 2) Wenn ich den empfohlenen Wert hinzufüge, bekomme ich: {dirname (dirname (http://myurl.net/testbed/AdminLTE/upload/?).)} – Woody

+0

Danke @Forbs! Deine Eingabe hat mich auf Trab gebracht. Musste ein paar Änderungen vornehmen wie $ uploadresult zu $ ​​uploadResult. Akzeptieren Sie Ihre Antwort. – Woody