2016-05-12 10 views
1

Hochladen So habe ich ftp-Funktionen wurde mit (manually setting $conn_id, making fpt_put($conn_id,...), conn_close etc) in meinem Projekt,Laravel Speicher Dateien beschädigt werden, während

jetzt habe ich hinzugefügt "Storage verwenden" in meinen Controller, Set Host, Benutzername und Passwort für ftp in filesystems.php und änderte alle Funktionen in meinem Controller zu "Storage ::" Typ.

Das Problem ist, dass meine Dateien beim Hochladen auf dem Speicher beschädigt werden. Nach dem Upload Dateien erfolgreich angezeigt (Ich habe versucht, Upload auf lokalen und Remote-FTP-Speicher), aber ich kann sie nicht öffnen, bekommen die "Konnte Bild nicht laden" Fehler auf Dateien in meinem /storage/app Ordner und leeres Quadrat beim Öffnen einer URL aus dem Remote-Speicher. Während ich ftp_put (...) und Zeug verwendete, alles funktionierte perfekt.

Das einzige, was ich bemerkt habe, ist die gegebenen Fehler Erklärung, wenn eine Datei in/storage/app platziert zu öffnen versuchen:

Fehler zu interpretieren JPEG-Bilddatei (nicht eine JPEG-Datei: beginnt mit 0x2f 0x76)

Was könnte das bedeuten und wie könnte ich mit dieser Situation umgehen? Würde jede mögliche Hilfe sehr schätzen!

UPD: sieht so aus, als ob die Datei irgendwo während des Hochladens aufhört, eine Datei ihres ursprünglichen Formats zu sein, und dann zwangsweise wieder umbenannt wird, was zu Korruption führt. Wie ich, .jpeg Datei hochladen, etwas passiert, dann wird es mit .jpeg am Ende gespeichert, nicht mehr ein .jpeg. Immer noch keine Ahnung.

+0

Möglicherweise ist die Sache, dass bei der Verwendung von ** ftp_put() ** I auch den Modus angegeben - ** ** FTP_BINARY, und dann nahm ich diese Spezifikation, weil nichts davon in Laravel docs gesagt wurde. Wenn ** ftp_put() ** aussieht wie ** ftp_put ($ conn_id, where_from, wo_to, FTP_BINARY) **, in ** Storage :: ** ist es wie ** (where_from, where_to, visibility) **, und über den Modus wird nichts gesagt. Also habe ich keine Ahnung, was ich mit diesem Wissen anfangen soll. – Coffee

+0

bist du in Ordnung, dass ich dir den Weg gebe, es richtig zu machen? Oder bestehen Sie darauf, es im Stil des 19. Jahrhunderts zu machen? – Arminius

+0

@Arminius Ich habe dieses Problem bereits gelöst, aber ich würde mich freuen, wenn Sie mir sowieso von dem "richtigen" Weg erzählen würden – Coffee

Antwort

0

Nun, ich habe es, das Problem war, dass ich alle Pfade in() wie sie waren mit ftp_put(), wie (zu, von), aber Storage :: erfordert Inhalte, nicht Pfad, in "von "Platz, also Storage :: put (zu, file_get_contents (von), 'public') löste mein Problem.

0

Dies ist zu Informationszwecken, da sie eine andere Möglichkeit angefordert hat. Es ist nicht nötig, es hoch oder runter zu spielen.

public function store(Request $request){    
    $this->validate($request, array(
// I have done the validations but skip to show it here 
      // OBTAINING THE IMAGES 
        $files = $request->images;    
        // COUNTING HOW MANY WERE RECEIVED 
        $file_count = count($files);     
        // INITIALIZING A COUNTER 
        $uploadcount = 0;  

       foreach($files as $file) { 

        $filename = $file->getClientOriginalName(); 

        $temporary = public_path(). '/uploads/temporary/' . $property->id; 
        if(!file_exists($temporary)) File::makeDirectory($temporary); 
        $temp = $file->move($temporary, $filename); // This is where they temporary stay to be fetched for processing 


        $thumbs = public_path(). '/uploads/thumbs/' . $property->id; 
        if(!file_exists($thumbs)) File::makeDirectory($thumbs); 
        Image::make($temp)->resize(240,160)->save($thumbs . '/' . $filename); 


        // We are setting up another directory where we want to save copies with other sizes 
        $gallery= public_path(). '/uploads/gallery/' . $property->id; 
        if(!file_exists($gallery)) File::makeDirectory($gallery); 
        Image::make($temp)->resize(400,300)->save($gallery . '/' . $filename); 

        $picture = new Picture; 
        $picture->property_id = $property->id; 
        $picture->name = $filename; 
        $picture->save(); 
        $uploadcount ++; 

       } 


       if($uploadcount == $file_count){ 
         Session::flash('success', 'Upload successfully'); 
         return Redirect()->route('property.show', $property->id); 
        } 
       else{ Session::flash('errors', 'screwed up'); 
        return Redirect::to('upload')->withInput()->withErrors($validator); 
        } 

     } 
Verwandte Themen