我正在尝试为我可以通过JavaScript访问的网络应用提供一些音频。
音频文件(大小约为20 kB)位于root/sounds
文件夹中;就像我使用其他静态文件(css样式表,JavaScript文件,图像等)一样,我将其添加到我的app.yaml:
- url: /sounds
static_dir: sounds
但是当我尝试部署我的应用程序时,该工具会抛出此错误:
2015-08-02 17:34:35,805 ERROR appcfg.py:2621 An unexpected error occurred. Aborting.
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 2459, in DoUpload
self._UploadMissingFiles(missing_files, openfunc)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 2600, in _UploadMissingFiles
self.blob_batcher.Flush()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 1464, in Flush
self.SendBatch()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 1423, in SendBatch
payload,
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 40: ordinal not in range(128)
这是Google App Engine的错误,还是我做错了什么?
我在Windows 10上,如果这有所不同。
答案 0 :(得分:1)
更新:我最初的怀疑是偏离目标。隐藏在评论中的修复方法是将音频文件的mime_type:
添加到app.yaml
。
更新2:跟踪它。 appcfg
使用mimetypes
,它尝试从本地系统获取mime类型映射的扩展,以与静态文件关联。对于Windows,这意味着咨询注册表。新安装的Windows 10并不知道.mp3
是什么。 mime_type:
中的app.yaml
覆盖会绕过查找。
这是一个有趣的堆栈跟踪。我怀疑它可能与sounds
中的一个或多个文件名有关,但我没有可以使用Win10进行实验。
是否有任何文件名包含扩展字符集中的字符? (例如,变音符号或其他非ascii)?如果您不想显示名称,一个简单的实验就是查看您是否在sounds
中使用单个文件上传了应用版本,其中该文件具有通用名称(如{{ 1}})。如果可行的话,那就是缩小导致问题的名称的问题。
添加:首先尝试使用和清空example.mp3
目录进行上传,以排除问题出在其他地方的情况。你已经试过了吗?