2017-01-16 1 views
0

Ich benutze Axios, um AJAX-Anfragen an Fat Free zu stellen.Fat Free konnte Axios FormData mit Datei-Upload nicht abfangen

Hier ist der Empfänger-Nummer: (. Ich verwende derzeit Axios die Arbeit zu tun)

$files = \Web::instance()->receive(function($file){ 
    var_dump($file); 
    return (substr($file["type"],0,6)=="image/"); 
}, true); 
if($files===false) 
    throw new \Exception\UnexpectedInput("U didn't provide any file"); 

und hier ist der Absender

return new Promise((ok,err)=>{ 
    var datanya = new FormData(); 
    datanya.append(this.generateRandomString(), new Blob([file[0]], {type:"image/jpeg"}), "image.jpg"); 
    // generate id for cancelation. 
    this.uploadCancelSource = CancelToken.source(); 
    var config = { 
     cancelToken: this.uploadCancelSource.token, 
     onUploadProgress:(e)=>{ 
      this.uploadProgress = Math.round((e.loaded * 100)/e.total); 
     } 
    } 
    APICall.put("invoice/bukti", datanya, config).then(e=>{ 
    }); 
}); 

Die Nutzlast für mich in Ordnung zu sein scheint, ich meine, Es überträgt den Dateinamen, den Inhaltstyp und den Namen des Formulars. Aber die Klasse von FatFree Web hat es nicht verstanden. Es sagt nur, dass es ein application/octet-stream ist.

Hier Screen für die Nutzlast

Request Dumping SS

Und hier ist die gesicherten Daten aus dem \Web::instance()->receive

Dumped data from server

kennen Sie das Problem?

+1

Dies scheint die 'PUT' und' Post' Ausgabe, ref zu sein: https://github.com/bcosca/fatfree/blob/master/lib/web.php#L173 https: // Kern. github.com/ebidel/2410898 Ich muss 'PUT' verwenden, um die Datei zum Server zu geben. :( – Chris

+0

Warum brauchen Sie ein 'PUT'? Sie können versuchen,' $ f3-> VERB = 'POST'' kurz vor dem Aufruf 'receive()', aber das ist ein hässlicher Hack .. – xfra35

+1

hängt von der clientside Upload-Implementierung. Ich musste '$ f3-> VERB = 'POST' auch schon einmal für einen BlueJun-Jquery-Uploader verwenden und es funktionierte ziemlich gut, sieht ein wenig hackisch aus, aber wenn der Uploader nicht den üblichen Konventionen folgt, ist es ein vernünftiger Hack IMO – ikkez

Antwort

0

das aktuelle Verhalten der Klasse Web sind das Hauptproblem. Wie Sie an der source code sehen können, oder sehen Sie die documentation, hat es unterschiedliche Verhalten auf verschiedenen Anfrage-Methode.

Ein wenig hacken, kann verwendet werden, um das aktuelle Problem zu beheben, aber ich entschied, die Anfrage-Methode zu ändern.

Verwandte Themen