我正在使用python(2.7.5)和django(1.6.1)保存文件夹中的附件。它完全适用于linux机器。但我正在Windows上执行此项目我收到了以下错误。
[Errno 22] Invalid argument
Request Method: POST
Request URL: http://127.0.0.1:8000/save_partner
Django Version: 1.6.1
Exception Type: OSError
Exception Value:
[Errno 22] Invalid argument
Exception Location: C:\Python27\lib\site-packages\django\core\files\storage.py in _save, line 199
Python Executable: C:\Python27\python.exe
Python Version: 2.7.6
Python Path:
['C:\\Projects\\customer',
'C:\\Python27\\lib\\site-packages\\distribute-0.6.49-py2.7.egg',
'C:\\Python27\\lib\\site-packages\\pymongo-2.6.3-py2.7-win-amd64.egg',
'C:\\Windows\\system32\\python27.zip',
'C:\\Python27\\DLLs',
'C:\\Python27\\lib',
'C:\\Python27\\lib\\plat-win',
'C:\\Python27\\lib\\lib-tk',
'C:\\Python27',
'C:\\Python27\\lib\\site-packages',
'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info']
Server time: Sat, 29 Mar 2014 12:53:35 +0530
错误显示在default_storage(最后一行)行
中for i in request.FILES.getlist('avtar'):
avatarName = i.name
filepath='avatars/'+date+'_'+avatarName
address = settings.MEDIA_ROOT+filepath
path = refine(address)
avtar_path=path
default_storage.save("%s"%(filepath), ContentFile(i.read()))
default_storage.save("%s"%(filepath), ContentFile(i.read()))
默认_storage是从django
导入的from django.core.files.storage import default_storage
为什么它不能在windows7中运行..?
答案 0 :(得分:1)
您如何填充filepath
?很可能是使用Linux文件路径约定构建它,Linux使用前斜杠(/
)作为路径分隔符,而Windows使用反斜杠(\
)。使用Python的os.path
模块以独立于平台的方式制定文件路径。
#prints spam\egg on Windows and spam/egg on Linux
print os.path.join('spam', 'egg')