Загрузить Zip-архивы с помощью Pylons Web Framework - PullRequest
0 голосов
/ 27 июля 2011

Я занимаюсь разработкой веб-приложения с использованием Pylons Framework (1.0). Одна из требуемых функций - загружать zip-архивы, хранить их на сервере и иметь возможность загружать их позже.

Сначала я сделал это на своем контроллере REST:

def submit(self):   
    uploadedFile = request.POST['myFile']
    path = 'some/path/in/the/filesystem'
    storedFile = open(path, 'wb')
    shutil.copyfileobj(uploadedFile.file, storedFile)
    storedOrbjetFile.close()

К сожалению, это приводит к повреждению файла архива. Я попытался использовать uploadedFile.value напрямую, и, похоже, он работает, но копия файла будет глубже в бэкэнде, и я не хочу передавать значение в бэкэнд, а в файл вместо этого.

Альтернативное решение, которое я нашел, состояло в том, чтобы создать новый временный файл и скопировать в него значение. Затем я могу получить путь к файлу временного файла и указать путь к нему.

Так что это приводит к нескольким открытым вопросам:

  • Как я могу сделать это чистым и избежать дополнительной операции копирования?
  • Какова общая процедура для такой вещи?
  • Можно ли использовать file.file (tempfile), предоставляемый pylons, вместе с shutil.copyobjfile, почему архив поврежден?

Мой вариант использования кажется довольно распространенным, поэтому я немного удивлен, что у меня возникают трудности ..

Спасибо за вашу помощь.

...