2017-12-28 10 views
0

Ich möchte PDF/Docs-Dateien zusammen mit anderen JSON-Daten im Axios-Dienst senden. Ich habe verwiesen (Ajax post a file from a form with Axios), aber es sendet nur Datei ohne JSON-Daten.Wie man eine Datei (pdf, doc) im Axios-Dienst zusammen mit JSON-Daten posten kann

field_value: {}, // here it shows empty object,but it should show File Object 
field_type: "file_upload", 
is_file_upload: true 

}

wenn ich das Objekt Konsole vor Anforderung sendet, als es mir ein Dateiobjekt in Formdata zeigt(), aber es leere Klammern zeigen, wenn sie sehen, daß es in Post-Anforderung ist.

+0

Ich würde die Datei zu base64 konvertieren und es zusammen mit anderen JSON-Daten hinzugefügt. –

+0

Danke Madhu, wenn ich Datei in base64 umwandeln dann wie könnte ich identifizieren, ob es PDF oder Image oder Docx auf Serverseite ist –

+0

, wenn Sie eine Datei oder ein Bild zu base64 konvertieren, beginnt der erste Teil mit dem Typ einer Datei 'Daten: Anwendung/pdf; base64, ..... '. Mit diesem können Sie den Dateityp identifizieren. –

Antwort

0

Sie können etwas tun:

//HTML  
<input type="file" @change="onFileChanged" :multiple="multiple" :accept="accept" /> 

Dann wird Ihr JavaScript-Code der Datei-Eingabe zu handhaben:

onFileChanged(event) { 
    var files = event.target.files || event.dataTransfer.files; 
    if (!files.length) { 
    return; 
    } 

    var formData = new FormData(); 

    // Add the File object to the formdata 
    if (this.multiple) { 
    formData.append("files", files); 
    } else { 
    formData.append("file", files[0]); 
    } 

    // Add your data... 
    formData.append("data", myData); 
} 

uploadDocument(formData) { 
    return Axios.post('/api/documents', formData, { 
    headers: { 
     'Content-Type': 'multipart/form-data' 
    } 
    }); 
} 

Verwenden Sie die Formulardaten, die Sie aus der Datei Eingabetyp erhalten an das Backend zu schicken .

Dann können Sie etwas tun:

uploadDocument(formData).then((response) => { 
    console.log('data sent'); 
}) 

Hoffe, es hilft.

+0

Dank Sambor, aber Ihre Lösung sendet nur Dateien in Anfrage, es hat keine anderen JSON-Daten zu senden. –

+0

Überprüfen Sie die Zeile // Fügen Sie Ihre Daten hinzu ... formData.append ("data", myData); –