用户上传一个压缩文件(内含 html 文件夹),网站解压文件并保存至指定目录,供外部直接访问静态 html 文件。
解压文件时报错:UnicodeEncodeError: 'ascii' codec can't encode characters,具体信息见链接:报错信息
def handle_uploaded_file(f, num, new_dir_name):
release_file_dir = os.path.join(UPLOAD_FILES_DIR, str(num))
new_dir = os.path.join(release_file_dir,new_dir_name)
filePath = f
with zipfile.ZipFile(filePath, 'r') as zf:
for fn in zf.namelist():
right_fn = fn.encode('cp437').decode('utf-8') # 将文件名正确编码
right_fn = os.path.join(release_file_dir, right_fn)
if right_fn[-1] == '/':
os.makedirs(right_fn, mode=0o777) #创建文件夹
continue
with codecs.open(right_fn, 'w+', encoding='utf-8') as output_file: # 创建并打开新文件
with zf.open(fn, 'r') as origin_file: # 打开原文件
shutil.copyfileobj(origin_file, output_file) # 将原文件内容复制到新文件
renameFile(release_file_dir,new_dir)
return os.path.join(release_file_dir,new_dir_name)```
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.