文件上传,报错:IOError: [Errno 13] Permission denied
提示:E:\\pythonProject1\\static/uploads
待上传文件目录:

原代码如下:
f=request.files['file']
basepath = path.abspath(path.dirname(__file__))
upload_path=path.join(basepath,"static/uploads")
f.save(upload_path,secure_filename(f.filename))
1)(E:\\pythonProject1\\static/uploads)中,后半段显然与前面不一致,尝试,修改为
原来:
upload_path=path.join(basepath,"static/uploads")
修改为:
upload_path=path.join(basepath,"static","uploads")
仍然报错,提示:E:\\pythonProject1\\static\\uploads
2)最后修改如下,问题解决:
原来:
upload_path=path.join(basepath,"static/uploads")
f.save(upload_path,secure_filename(f.filename))
修改为:将filename加入join中,后面直接save
filename = secure_filename(f.filename)
upload_path=path.join(basepath,"static","uploads",filename)
f.save(upload_path)
问题解决!
附新的完整代码如下:
# -*- coding: UTF-8 -*-
from flask import Flask,render_template,request,redirect,url_for
from werkzeug.routing import BaseConverter
from os import path
from werkzeug.utils import secure_filename
app = Flask(__name__)
@app.route('/upload',methods=['GET','POST'])
def upload():
if request.method == 'POST':
# 获取文件
f=request.files['file']
# from os import path (通过当前的路径)获取绝对路径
basepath = path.abspath(path.dirname(__file__))
# from werkzeug.utils import secure_filename 上传文件文件名的安全获取
# 不安全的获取上传文件的文件名是直接f.filename
filename = secure_filename(f.filename)
#通过绝对路径,得到对应存放的目标位置,并且进行拼接
upload_path=path.join(basepath,"static","uploads",filename)
# ('upload_path', 'E:\\pythonProject1\\static\\uploads\\es.txt') 不支持中文名,传递的文件名是:es启动命令.txt
print ("upload_path",upload_path)
f.save(upload_path)
return redirect(url_for('upload'))
return render_template('upload.html')
if __name__ == '__main__':
#debug=True 加上后,页面会自动加载,不用每次执行
app.run(debug=True)
附上html上传示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>文件上传示例</h1>
<form action="" method="post" enctype="multipart/form-data">
<p> <input type="file" name="file">
<input type="submit" value="Upload">
</p>
</form>
</body>
</html>
在进行文件上传时遇到IOError: [Errno 13] Permission denied的问题,错误提示指向E:\pythonProject1\static/uploads目录。通过检查和修改代码,发现原代码中路径不一致导致问题。修正方法是统一路径格式,并在保存文件时使用join和save方法,最终成功解决文件上传权限问题。
1万+

被折叠的 条评论
为什么被折叠?



