По умолчанию django-ajax-uploader с бэкендом s3 дает ошибку MalformedXML

Я установил тестовый скрипт почти так же, как в примере: https://github.com/GoodCloud/django-ajax-uploader

Кажется, что начал загружать файл (javascript обновляет имя и размер файла), но представление дает мне ошибку 500 с этим сообщением. Я не могу найти ничего о том, как это исправить.

S3ResponseError: S3ResponseError: 400 Bad Request <Error><Code>MalformedXML</Code><Message>The XML you provided was not well-formed or did not validate against our published schema</Message><RequestId>26E6EF8296A0E585</RequestId><HostId>F4QUOsVT4LxC+6OUP2lE1/9uPC77keOejyWs57GpS5kjvHXpun3U+81ntL8ZTgDa</HostId></Error> 

Мне удалось загрузить файл в оболочке с помощью boto с помощью команд здесь: Загрузить 0 байт файла в Amazon S3

Вид:

 from ajaxuploader.views import AjaxFileUploader from ajaxuploader.backends.s3 import S3UploadBackend import_uploader = AjaxFileUploader(backend=S3UploadBackend) 

JavaScript:

 var uploader = new qq.FileUploader({ action: "/ajax/profile-upload/", element: $('#file-uploader')[0], multiple: true, onComplete: function(id, fileName, responseJSON) { if(responseJSON.success) { alert("success!"); } else { alert("upload failed!"); } }, onAllComplete: function(uploads) { // uploads is an array of maps // the maps look like this: {file: FileObject, response: JSONServerResponse} alert("All complete!"); }, params: { 'csrf_token': $('[name=csrfmiddlewaretoken]').val(), 'csrf_name': 'csrfmiddlewaretoken', 'csrf_xname': 'X-CSRFToken', }, }); 

шаблон:

 <div id="file-uploader"> <noscript> <p>Please enable JavaScript to use file uploader.</p> </noscript> </div> 

У меня есть переменные доступа s3 в файле settings.py (они вызываются в файле ajaxuploader / backends / s3.py):

 AWS_ACCESS_KEY_ID = myAccessKey AWS_SECRET_ACCESS_KEY = mySecretKey AWS_BUCKET_NAME = bucketName 

One Solution collect form web for “По умолчанию django-ajax-uploader с бэкендом s3 дает ошибку MalformedXML”

Я решил эту проблему с помощью специального s3-сервера, который переопределяет функцию загрузки и использует django-хранилища вместо boto для сохранения файлов. попробуй это :

 from ajaxuploader.backends.base import AbstractUploadBackend from django.core.files.storage import default_storage class S3CustomUpload(AbstractUploadBackend): NUM_PARALLEL_PROCESSES = 4 def upload_chunk(self, chunk): #save file to s3 self._fd.write(chunk) self._fd.close() def setup(self, filename): self._fd = default_storage.open('%s/%s' % ('uploads/materials/', str(filename)), 'wb') def upload(self, uploaded, filename, raw_data, *args, **kwargs): try: if raw_data: # File was uploaded via ajax, and is streaming in. chunk = uploaded.read(self.BUFFER_SIZE) while len(chunk) > 0: self.upload_chunk(chunk, *args, **kwargs) chunk = uploaded.read(self.BUFFER_SIZE) else: # File was uploaded via a POST, and is here. for chunk in uploaded.chunks(): self.upload_chunk(chunk, *args, **kwargs) return True except: # things went badly. return False def upload_complete(self, request, filename, *args, **kwargs): upload = Upload() upload.upload = settings.S3_URL + "uploads/materials/"+ filename upload.name = filename upload.save() return {'pk': upload.pk} 
  • Data Mining в приложении Django / Postgres
  • python-openid не предоставляет атрибуты ax или sreg
  • Django Celery - не удается подключиться к amqp: //guest@127.0.0.8000: 5672 //
  • Модуль% в шаблоне Django
  • Редактирование объекта сериализатора django-rest-framework перед сохранением
  • django.db.utils.OperationalError: рядом с "񐁂򐁇N": синтаксическая ошибка
  • Django Rest Framework - не удалось разрешить URL для гиперссылок, используя имя представления "user-detail"
  • Различия в способах запуска скриптов Python
  • Python - лучший язык программирования в мире.