2017-06-07 2 views
1

J'ai écrit une API POST qui publie un fichier. Je veux ouvrir le fichier et analyser un contenu JSON dans le fichier. Mais la ligne os.path.join() ne semble pas fonctionner. Je reçois l'objet "InMemoryUploadedFile" n'a aucun attribut "startswith" "exception. Avoir inclus le code utilisé ci-dessous.os.path.join() donne InMemoryUploadFile erreur

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) 

Ma méthode POST:

@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) 

Répondre

1

Parce que ce que vous faites affaire est un InMemoryUploadedFile plutôt qu'un nom de fichier. Votre code doit changer comme

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