我正在使用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,)
答案 0 :(得分:0)
您无权打开(或写入?)您尝试使用的任何文件。尝试以超级用户身份运行脚本或更改您尝试从
读取/写入的目录的权限答案 1 :(得分:0)
<强> EACCES 强>
读取或搜索文件名组件的权限被拒绝。
因此,听起来您(或您的服务器正在运行的任何用户)对您当前路径的一部分没有读取权限。你可能穿过装载点吗?或者更改了其中一个父目录的权限?
答案 2 :(得分:0)
问题是服务器未配置为接受大小超过1 Kby的文件。解决方案是要求服务器管理员更改此配置。