django | ожидаемый объект str, bytes или os.PathLike, а не InMemoryUploadedFile - PullRequest
0 голосов
/ 31 января 2020

Я хочу попытаться получить путь к загруженному пользователем изображению, и я продолжу кодировать base64, чтобы проанализировать результат API, и я пойман в ловушку в этой ошибке, я нашел эту ошибку в своем проекте django.

File "/root/wibuzone/tool/module/LookAnimeInfoWithImage.py", line 11, in request
self.data = {'image':base64.b64encode(open(self.path,'rb').read())}
TypeError: expected str, bytes or os.PathLike object, not InMemoryUploadedFile

forms.py

class LaiwiForm(forms.Form):
browse_a_file = forms.ImageField(
        required=False,
        widget=forms.FileInput(
                    attrs={
                        'class':'form-control',
                        },
                ),
                                    )
image_url = forms.CharField(
        max_length=200,
        required=False,
        widget=forms.TextInput(
            attrs={
                'class':'form-control',
                'placeholder':'Image Url'
                }
            )
        )

views.py

class laiwi(FormView):
          form_class = LaiwiForm
          template_name = "tool/laiwi.html"

def post(self,request):
    if request.method == "POST" or "post":
       if len(request.FILES['browse_a_file']) == 0:
          pass

       else:
            imageFile = request.FILES['browse_a_file']
            print (LookAnimeInfoWithImage.imagefile(imageFile))

    return render(request,'tool/result/laiwi.html')

шаблон, laiwi . html

{% block content %}
<img src="{% static 'img/thumbnail/tool/laiwi.jpg' %}" class="img-thumbnail">
<br><br>
<form method="post" enctype="multipart/form-data">
  {% csrf_token %}
 <div class="form-group">
    <small class="form-text text-muted" style="padding-left:0.2em">masukan potongan gambar anime / hasil screenshot</small>
    {{form.browse_a_file}}
    <small class="form-text text-muted" style="padding-left:0.2">atau gunakan live url image</small>
    {{form.image_url}}
 </div>
   <button type="sumbit" class="btn btn-primary">search</button></form>{% endblock content %}
...