Я занимаюсь разработкой веб-приложения с использованием 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, почему архив поврежден?
Мой вариант использования кажется довольно распространенным, поэтому я немного удивлен, что у меня возникают трудности ..
Спасибо за вашу помощь.