django rest_framework Dateiupload mit Zusatzdaten
Verfasst: Dienstag 14. April 2020, 13:45
Hallo Allerseits,
ich versuche es hinzubekomme einen Dateiupload zu realisieren, wobei ich noch zusätzliche Informationen (z.B. Speicherpfad) mitschicken möchte.
Im Dokumentationsbeispiel wird in etwa dieses URL Schema angeben:
Und so wie ich das verstehe und getestet habe, wird hier nur ein Dateiname, ohne Pfadangabe unterstützt.Bei meiner Recherche bin ich noch auf diesen Ansatz gestoßen, dort die zweite Antwort. Hier würden zusätzlich Information im JSON Format übergeben, aber das konnte ich nicht nachbauen. Vielleicht ist dazu meine Django Version zu neu?! Verwende 3.0.5.
Meine View schaut daher wieder so aus, wie sie in der rest_framework Doku beschrieben ist:
Als Frontend verwende ich vuejs, und axios für die Requests:
Ich könnte mir zwei Wege vorstellen. Entweder schicke ich alles in einem Objekt:
Oder ich schicke die Zusatzinfos per URL mit:
Mit würde allerdings der erste Ansatz mehr zusagen.
Habt ihr eine Idee wie ich das umsetzten kann?
ich versuche es hinzubekomme einen Dateiupload zu realisieren, wobei ich noch zusätzliche Informationen (z.B. Speicherpfad) mitschicken möchte.
Im Dokumentationsbeispiel wird in etwa dieses URL Schema angeben:
Code: Alles auswählen
re_path(r'^upload/(?P<filename>[^/]+)$', views.FileUpload.as_view())
Meine View schaut daher wieder so aus, wie sie in der rest_framework Doku beschrieben ist:
Code: Alles auswählen
class FileUpload(APIView):
parser_classes = [FileUploadParser]
def put(self, request, filename, format=None):
file_obj = request.data['file']
with open(filename, 'wb+') as outfile:
for chunk in file_obj.chunks():
outfile.write(chunk)
return Response(status=204)
Code: Alles auswählen
this.$axios.put('/upload/test.mp4', this.inputFile, config)
.then(res => console.log(res))
.catch(err => console.log(err))
Code: Alles auswählen
this.$axios.put('/upload/test.mp4', { data: { file: this.inputFile, path: '/test/path/' } }, config)
Code: Alles auswählen
this.$axios.put('/upload/?path="/test/path/"&file=test.mp4', this.inputFile, config)
Habt ihr eine Idee wie ich das umsetzten kann?