2017-05-04 2 views
0

Ich habe seit einiger Zeit mit der Validierung von Dateien zu kämpfen, aber ich denke, ich bin auf dem richtigen Weg. Ich versuche eine Audiodatei "Sound" zu validieren, wenn ich ein Formular posten. Immer wenn ich das Formular ausprobiere, bekomme ich eine 'InMemoryUploadedFile' object has no attribute 'content'. Das Problem scheint bei form.is_valid() zu passieren. Bisher habe ich in Formen:Django Datei Validierungsfehler

class PostForm(forms.ModelForm): 
    def clean_sound(self): 
     file = self.cleaned_data.get('sound',False) 
     if file: 
      if not file.content-type in ["audio/mpeg","audio/mp3", "audio/wav"]: 
       raise ValidationError("Content-Type is not mpeg") 
      if not os.path.splitext(file.name)[1] in [".mp3",".wav"]: 
       raise ValidationError("Doesn't have proper extension") 
      return file 
     else: 
      raise ValidationError("Couldn't read uploaded file") 




    class Meta: 
     model = Places 
     fields = [ 

      'usersave', 
      'title', 
      'longitude', 
      'latitude', 
      'sound', 

     ] 

in der Ansicht:

@login_required(login_url='/accounts/login/') 
def post_create(request): 
    form= PostForm(request.POST or None, request.FILES or None) 


    if form.is_valid(): 

     # handle_uploaded_file(request.FILES['sound']) 
     instance = form.save(commit=False) 
     instance.save() 
     messages.success(request, 'Successfully Created') 
     return HttpResponseRedirect('/') 


    context= { 
     'form': form, 
    } 
    return render(request, 'location/post_form.html',context,) 

Ich bin nicht sicher, was die ‚InMemoryUploadedFile‘ Fehler ist, und würde es begrüßen, viel irgendwelche Ratschläge, die mir in der zeigen könnte richtige Richtung!

Antwort

1

wollte kommentieren, aber noch nicht genug Reputation.

Wenn Sie einen Blick auf die source code werfen, scheint es, dass Sie open() zuerst aufrufen müssen, um auf seinen Inhalt zuzugreifen. Die Klasseninstanz file = self.cleaned_data.get('sound', False) hat kein content-Attribut, wie im Fehler angegeben. Können Sie zuerst versuchen, die Datei zu öffnen?

1

versuchen, diese

file = self.cleaned_data.get ('Sound')

und

versuchen Sie die gleiche Audiodatei und bekommen den Fehler laden? oder hast du es auch mit anderen audio-dateien versucht?

Verwandte Themen