文件上传问题 - Python-WIndows-CheryyPy
File upload issue - Python-WIndows-CheryyPy
我是 python 和 cherrypy 的新手。我正在尝试使用以下代码上传文件:
@cherrypy.tools.noBodyProcess()
def POST(self,theFile=None):
lcHDRS = {}
for key, val in cherrypy.request.headers.iteritems():
lcHDRS[key.lower()] = val
formFields = myFieldStorage(fp=cherrypy.request.rfile,
headers=lcHDRS,
environ={'REQUEST_METHOD':'POST'},
keep_blank_values=True)
dt = datetime.now()
date = dt.strftime('%Y-%m-%d')
dt = dt.strftime('%Y%m%d%H%M%S')
theFile = formFields['theFile']
theFile.filename = str(dt) + "file"
shutil.copy2(theFile.file.name,os.path.join(absolutePath , theFile.filename))
...
...
我检查了路径 os.path.join(absolutePath , theFile.filename) 并且它正在正常运行。
问题是代码在 Linux-ubuntu 上运行良好,但在 windows 上运行不正常。
调用的错误是:Edited
shutil.copy2(theFile.file.name,settings.UPLOAD_FILE_PATH + theFile.filename)
File "C:\Anaconda\lib\shutil.py", line 130, in copy2
copyfile(src, dst)
File "C:\Anaconda\lib\shutil.py", line 82, in copyfile
with open(src, 'rb') as fsrc:
IOError: [Errno 13] Permission denied: 'c:\users\username\appdata\local\temp\tmpjy3gys'
我哪里错了?
如果您需要任何其他信息,请告诉我。
我猜 windows 对启动程序有 UAC 限制,你有没有试过 运行 管理员权限下的脚本?
该问题可能与某些临时文件安全性有关,该安全性禁止通过文件名重新打开。尝试将 shutil.copy2
调用替换为:
with open('/path/that/you/have/permission/to', 'wb') as f:
shutil.copyfileobj(theFile.file, f)
我是 python 和 cherrypy 的新手。我正在尝试使用以下代码上传文件:
@cherrypy.tools.noBodyProcess()
def POST(self,theFile=None):
lcHDRS = {}
for key, val in cherrypy.request.headers.iteritems():
lcHDRS[key.lower()] = val
formFields = myFieldStorage(fp=cherrypy.request.rfile,
headers=lcHDRS,
environ={'REQUEST_METHOD':'POST'},
keep_blank_values=True)
dt = datetime.now()
date = dt.strftime('%Y-%m-%d')
dt = dt.strftime('%Y%m%d%H%M%S')
theFile = formFields['theFile']
theFile.filename = str(dt) + "file"
shutil.copy2(theFile.file.name,os.path.join(absolutePath , theFile.filename))
...
...
我检查了路径 os.path.join(absolutePath , theFile.filename) 并且它正在正常运行。 问题是代码在 Linux-ubuntu 上运行良好,但在 windows 上运行不正常。 调用的错误是:Edited
shutil.copy2(theFile.file.name,settings.UPLOAD_FILE_PATH + theFile.filename)
File "C:\Anaconda\lib\shutil.py", line 130, in copy2
copyfile(src, dst)
File "C:\Anaconda\lib\shutil.py", line 82, in copyfile
with open(src, 'rb') as fsrc:
IOError: [Errno 13] Permission denied: 'c:\users\username\appdata\local\temp\tmpjy3gys'
我哪里错了? 如果您需要任何其他信息,请告诉我。
我猜 windows 对启动程序有 UAC 限制,你有没有试过 运行 管理员权限下的脚本?
该问题可能与某些临时文件安全性有关,该安全性禁止通过文件名重新打开。尝试将 shutil.copy2
调用替换为:
with open('/path/that/you/have/permission/to', 'wb') as f:
shutil.copyfileobj(theFile.file, f)