Я следую этому уроку для загрузки файлов . Файлы успешно загружены. Но когда я попытался скачать этот файл. Тогда я получаю сообщение об ошибке. Загрузка docx/doc/ppt/pptx/txt
файлов.
Ошибка
UnicodeDecodeError: 'utf8' codec can't decode byte 0x9f in position 17: invalid start byte
Загрузка обработчика изображений
def get(self, id):
event = Event.get_by_id(int(id))
if event:
#print event.file_type
self.response.headers['Content-Type'] = event.file_type
self.response.out.write(event.file_contents)
ОБНОВЛЕНИЕ № 3
Когда я печатаю blob_info.key()
. Тогда я получаю 8QAnEy4nH2OOKM4KQvtF7g==
. Без этих знаков /serve/8QAnEy4nH2OOKM4KQvtF7g
URL работает. Но почему добавляется знак ==
?
UploadHandler
Класс
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
upload_files = self.get_uploads('file') # 'file' is file upload field in the form
blob_info = upload_files[0]
self.redirect('/serve/%s' % blob_info.key())
Проходящий боб ключ
localhost:8080/serve/8QAnEy4nH2OOKM4KQvtF7g
ОБНОВЛЕНИЕ 2
Файл загружен с использованием UploadHandler
. И Bob key
также сохраняется в моей модели. Но ServeHandler
не работает. Я получаю 404 Not Found
.
ServeHandler
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info)
URL
webapp2.Route(r'/serve/([^/]+)?', handler=my.ServeHandler, name='server'),
ОБНОВЛЕНИЕ 1
txt
файлы работают просто отлично. Еще кое-что. Я не хочу печатать контекст файла на экран. Я хочу, чтобы когда пользователь нажимал на имя файла, этот файл загружался на компьютер Является ли это возможным? спасибо