2016-05-19 6 views
0

Ich habe eine clientseitige Komponente, die eine DataURL erzeugt (d. H. Ein Benutzer lädt ein Bild hoch oder schnappt es und schneidet es dann aus). Ich muss das über einen AJAX-Aufruf an einen Segel-Endpunkt senden. Von den Segeln docs wird der Endpunkt soll die Dateien wie so lesen:DataURL über AJAX zu Segeln Endpunkt

req.file('file_name'); 

Ich stecke, wie soll ich von DataURI gehen -> formatiert AJAX-Aufruf, so dass der Endpunkt der lesen in der Lage, Datei von req.file. Ich denke, ich muss nur sehen, dass eine Implementierung des Aufrufs in einer Javascript/Framework-Bibliothek eingerichtet wird, damit ich sie implementieren kann.

Vielen Dank.

Antwort

1

Auf der Client-Seite müssen Sie die DataURL in Formulardaten konvertieren. Es gibt ein paar Beispiele here und here und senden Sie es an die Route in Ihrem Controller.

Ihr Endpunkt wird eine Route sein, die ein bisschen wie folgt aussieht:

var uploadHandlier = function(req, res) 
    { 

     req.file('avatar').upload(
     { 
       // don't allow the total upload size to exceed ~4MB 
       maxBytes: 4000000, 
       dirname: '/tmp' // some temp directory 
     }, function whenDone(error, uploadedFiles) 
     { 
       if (error) 
       { 
        if (error.code === 'E_EXCEEDS_UPLOAD_LIMIT') 
        { 
          return res.badRequest(
          { 
           msg: error.message 
          }); 
        } 

        return res.serverError(error); 
       } 

       if (_.isEmpty(uploadedFiles)) 
       { 
        res.badRequest(
        { 
          msg: "No file was uploaded." 
        }); 
        return; 
       } 

       var filePath = uploadedFiles[0].fd; 
       var fileType = uploadedFiles[0].type; 

       if (!_.includes(['image/jpeg', 'image/png', 'image/gif'], fileType)) 
       { 
        res.badRequest(
        { 
          msg: "Invalid file type." 
        }); 

        return; 
       } 

       // do your thing... 

     }); 
    };