2017-06-07 5 views
1

Ich habe eine POST API geschrieben, die eine Datei veröffentlicht. Ich möchte die Datei öffnen und einen JSON-Inhalt in der Datei analysieren. Aber die Zeile os.path.join() scheint nicht zu funktionieren. Ich bekomme "'InMemoryUploadedFile' Objekt hat kein Attribut 'startswith'" Ausnahme. Habe den folgenden Code verwendet.os.path.join() gibt InMemoryUploadFile Fehler

def schedule_load(file_name): 
    print file_name 
    file_json = default_storage.open(os.path.join("schedule_files", file_name), 'r') 
    var = file_json.read() 
    print var 
    file_json.close() 
    schedule = json.loads(var) 

Meine POST-Methode:

@api_view(['POST']) 
def post_schedule(request): 
print "post_schedule" 
if request.method == 'POST': 
    print "if POST" 
    form = ScheduleForm(request.POST, request.FILES) 
    file_name = form['schedule_file'].value() 

    if form.is_valid(): 
     print "is_valid" 
     form.save() 
     schedule_load(file_name) 
     return JsonResponse({"status": "success"}, status=status.HTTP_200_OK) 
    else: 
     return JsonResponse({"status": "Invalid file"}, status=status.HTTP_200_OK) 

Antwort

1

Denn mit dem, was Sie es zu tun ein InMemoryUploadedFile ist eher als ein Dateiname. Ihr Code sollte sich folgendermaßen ändern:

def schedule_load(file_name): 
    var = file_name.read() 
    print var