0

我正在使用 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,)
4

3 回答 3

0

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

于 2013-07-31T23:00:39.620 回答
0

getcwd 手册页

EACCES

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

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

于 2013-07-31T23:03:51.667 回答
0

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

于 2014-01-01T23:25:34.897 回答