OSError:[Errno 13]传递文件时,Python脚本中的权限被拒绝> 1 Kb

时间:2013-07-31 22:48:26

标签: python permissions cgi

我正在使用jquery + ajax将文件传输到服务器。在服务器中我有一个python脚本,我在下面复制,它只是获取文件并将其写入磁盘。该脚本适用于小于1 Kby的字节,但对于较大的文件,它会引发异常:OSError:[Errno 13] Permission denied

为什么会这样?我无法访问服务器。我应该向服务器管理员询问一下吗?

#!/usr/local/bin/python
import cgi, os
import cgitb; cgitb.enable()

try: # Windows needs stdio set for binary mode.
    import msvcrt
    msvcrt.setmode (0, os.O_BINARY) # stdin  = 0
    msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
    pass

form = cgi.FieldStorage()

# A nested FieldStorage instance holds the file
fileitem = form['photo']

# Test if the file was uploaded
fn = os.path.basename(fileitem.filename)

# strip leading path from file name to avoid directory traversal attacks
if fileitem.filename:  
    fn = fileitem.filename
    open('fotos/' + fn, 'wb').write(fileitem.file.read())
    message = 'The file "' + fn + '" was uploaded successfully'

else:
    message = 'No file was uploaded'

print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)

3 个答案:

答案 0 :(得分:0)

您无权打开(或写入?)您尝试使用的任何文件。尝试以超级用户身份运行脚本或更改您尝试从

读取/写入的目录的权限

答案 1 :(得分:0)

来自getcwd man page

  

<强> EACCES

     

读取或搜索文件名组件的权限被拒绝。

因此,听起来您(或您的服务器正在运行的任何用户)对您当前路径的一部分没有读取权限。你可能穿过装载点吗?或者更改了其中一个父目录的权限?

答案 2 :(得分:0)

问题是服务器未配置为接受大小超过1 Kby的文件。解决方案是要求服务器管理员更改此配置。