我正在使用Django Rest Framework 3.4.4和Django 1.10。 这是客户端的发布请求:
$http.post(fileUrl, fd, {
withCredentials: true,
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
}).success(function(data) {
....
在服务器端,我有以下内容:
def post(self, request, format=None):
file_ids = []
file_list = request.FILES.getlist('file_path')
for file in file_list:
serializer = FileSerializer(data={'file_path': file})
if serializer.is_valid():
serializer.save()
....
使用filname如foo.pdf正确上传文件。但是当文件名包含例如亚美尼亚字母:ա.pdf时,我收到了UnicodeEncodeError错误: UnicodeEncodeError, Traceback
答案 0 :(得分:0)
这很可能意味着您没有设置系统语言变量。
某些应用程序 - 例如主管 - 有助于运行Django项目,不会考虑默认系统。你有时需要自己设置它。
很可能你会失踪:
例如。
答案 1 :(得分:0)
您还可以在模型的保存方法上尝试slugify文件名。您可以找到如何从here覆盖模型的保存方法。想法是在保存对象之前,更改文件名。而不是“ա.pdf”,slugify可能会将其更改为“w.pdf”。你也可以添加
# -*- coding: utf-8 -*-
在您的视图顶部,如this example。