python实现网盘代码
时间: 2023-08-11 08:02:35 浏览: 364
Python实现网盘代码可以使用第三方库来简化实现过程。以下是一个简单的代码示例,实现了创建文件夹、上传文件、下载文件、删除文件等功能:
```python
import os
from flask import Flask, request, redirect, url_for
from werkzeug.utils import secure_filename
# 设置允许上传的文件类型和最大文件大小
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}
MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 16MB
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = './uploads'
app.config['MAX_CONTENT_LENGTH'] = MAX_CONTENT_LENGTH
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/')
def index():
return 'Hello, World!'
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return '文件上传成功'
else:
return '不支持的文件类型'
return '''
<!doctype html>
<title>上传文件</title>
<h1>上传文件</h1>
<form method=post enctype=multipart/form-data>
<input type=file name=file>
<input type=submit value=上传>
</form>
'''
@app.route('/download', methods=['GET'])
def download_file():
filename = request.args.get('filename')
return redirect(url_for('static', filename='uploads/' + filename))
@app.route('/delete', methods=['GET'])
def delete_file():
filename = request.args.get('filename')
os.remove(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return '文件删除成功'
if __name__ == '__main__':
if not os.path.exists(app.config['UPLOAD_FOLDER']):
os.makedirs(app.config['UPLOAD_FOLDER'])
app.run()
```
上述代码使用了Flask框架来创建一个简单的Web应用,实现了文件上传、下载和删除功能。上传的文件存储在`./uploads`目录下,通过访问`/upload`来上传文件,通过访问`/download?filename=xxx`来下载文件,通过访问`/delete?filename=xxx`来删除文件。
为了保证上传的文件安全,代码中使用了`secure_filename`函数来过滤文件名,`ALLOWED_EXTENSIONS`列表来限制允许上传的文件类型,并通过`MAX_CONTENT_LENGTH`限制了文件的最大大小。
以上代码仅为简单示例,实际应用中可能还需要添加用户登录、文件分享、文件管理等功能。
阅读全文