Я пытаюсь заставить пользователя загружать файл изображения, а затем он должен автоматически преобразовываться в строку base64.Django не смог рассмотреть изображение
Так что мой вход форма выглядит,
<form role="form" method="POST" action="{% url 'Guideform-edit' object.pk %}"
class="post-form form-horizontal">{% csrf_token %}
<!-- customizing form -->
{{ form|crispy }}
<!-- End of customization -->
<div style="position:relative;">
<a class='btn btn-primary' href='javascript:;'>
Choose File...
<input type="file"
style='position:absolute;z-index:2;top:0;left:0;bottom:0;right:0;filter: alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;background-color:transparent;color:transparent;'
name="file_source" size="40" onchange='$("#upload-file-info").html($(this).val());'>
</a>
<span class='label label-info' id="upload-file-info"></span>
</div>
<button type="submit" class="save btn btn-default btn-primary center-block">Update</button>
</form>
Соответствующий класс вид похож,
class GuideFormUpdateView(UpdateView):
model = Guide
fields = ['name', 'image', 'point_of_interest']
template_name_suffix = '_update_form'
def post(self, request, *args, **kwargs):
query_dict = request.POST
img = Image.open(StringIO(query_dict['file_source']))
print img
И ошибка я получил, это,
File "/home/avinash/django_projects/guide/src/guide/views.py" in post
166. img = Image.open(StringIO(query_dict['file_source']))
File "/home/avinash/.virtualenvs/guide/local/lib/python2.7/site-packages/PIL/Image.py" in open
2295. % (filename if filename else fp))
Exception Type: IOError at /guides/edit/1
Exception Value: cannot identify image file <StringIO.StringIO instance at 0x7f427ab4c6c8>
Я также пытался печати переменная query_dict,
print query_dict
Выход меня есть
{u'csrfmiddlewaretoken': u'xxxxxxxxxxx', u'name': u'pieza tower', u'file_source': u'20150706_104718.jpg'}
Таким образом, кажется, что он получает загруженное изображение в виде строки, а не в качестве фактического изображения.
StringIO используется точно так же, как файл, который сохраняется на диск, но из строки. PIL (библиотека изображений Python) не может идентифицировать файл как изображение. –