2017-11-28 3 views
0

Ich benutze Angular in der Front und Nodejs + Express 4 im Backend. Wenn ich versuche, eine Datei mit einfachem HTML-Formular zu laden, enthält der Antrag:Nodejs Express 4 Datei-Upload funktioniert nicht

Content-Type: image/jpeg 

während plugings wie busboy, connect-busboy usw. benötigt Content-Type multipart/form-data zu sein, und daher gibt es nichts in req.files

Was fehlt mir hier?

Antwort

1

Es könnte sich nicht auf Ihre Frage beziehen. Lassen Sie mich jedoch eine Umgehungslösung verlassen, die ich gemacht habe, als ich das gleiche Problem hatte wie Sie. Ich stimme völlig zu, dass es ein bisschen schwierig sein könnte, Dateien über den Draht von Angular nach Express zu senden.

Was ich kam, war das Kompilieren von Dateien in Base64-String. Und decodiere sie, wenn das Backend die Base64-String-Daten ergreift. Auf diese Weise können Sie das Problem, das Sie in Ihrem Beitrag erwähnt haben, leicht vermeiden.

Zweitens, wenn Ihre App in Microservice-Architektur ist, und wenn Sie dazu bereit sind, verwenden Sie Amazon S3 oder Cloudinary, um Ihre Daten zu speichern. Und Sie werden nur die Link-URL für die Dateien in Ihrer Datenbank speichern. Auf diese Weise können Sie die Anzahl der Anfragen an Ihr Back-End reduzieren, und Sie können problemlos mit den Daten umgehen.

Hoffen Sie, dass diese Lösungen für Sie arbeiten!

+0

Ist es eine gute Idee, Dateien als base64 zu senden? Was ist besser in der Effizienz? Wird in Zukunft S3 verwenden, aber jetzt nicht, danke – Ashutosh

+0

@Ashutosh Wir müssen daran denken, dass base64 immer 33% größer als die ursprüngliche Rohdatendatei sein wird. Wenn Ihre Datei groß sein soll und Sie so viel Wert auf die Reduzierung von Verkehrsdaten legen. Ich würde nicht empfehlen, base64 zu verwenden. Wenn Sie dies jedoch nicht tun, könnte base64 eine Umgehungslösung sein. – supergentle

Verwandte Themen