简介
在这篇博客中,我们将介绍如何使用 Flask 创建一个局域网文件上传脚本,该脚本支持 PC、Linux 和移动设备。通过逐步解析代码片段,解释每个部分的功能,最终展示完整代码。希望这篇博客能帮助你理解如何实现文件上传功能。
依赖库
在运行代码之前,请确保已安装以下依赖库:
- Flask
可以使用以下命令安装这些库:
pip install flask
步骤 1: 导入必要的库
首先,我们需要导入必要的库,包括 Flask 和 os。
from flask import Flask, request, redirect, url_for, render_template
import os
步骤 2: 配置应用
接下来,我们配置 Flask 应用,包括上传文件夹和最大文件大小。
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'uploads/'
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 最大文件大小设置为 16MB
# 确保上传文件夹存在
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
步骤 3: 检查文件扩展名
我们定义了一个函数 allowed_file
,用于检查文件扩展名是否允许。
def allowed_file(filename):
"""检查文件扩展名是否允许"""
allowed_extensions = {'png', 'jpg', 'jpeg', 'gif', 'pdf', 'txt'}
return '.' in filename and filename.rsplit('.', 1)[1].lower() in allowed_extensions
步骤 4: 创建文件上传视图
我们定义了一个视图函数 upload_file
,用于处理文件上传请求。
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
if 'files[]' not in request.files:
return redirect(request.url)
files = request.files.getlist('files[]')
for file in files:
if file and allowed_file(file.filename):
filename = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
file.save(filename)
return redirect(url_for('upload_file'))
files = os.listdir(app.config['UPLOAD_FOLDER'])
return render_template('index.html', files=files)
步骤 5: 启动应用
最后,我们启动 Flask 应用,指定为 0.0.0.0 和 80 端口。
if __name__ == '__main__':
# 启动 Flask 应用,指定为 0.0.0.0 和 80 端口
app.run(host='0.0.0.0', port=80, debug=True)
HTML 模板
我们还需要一个 HTML 模板文件 index.html
,用于显示上传表单和已上传的文件列表。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>文件上传</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.container {
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
input[type="file"] {
margin-bottom: 10px;
}
button {
background-color: #007bff;
color: #fff;
border: none;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin: 5px 0;
}
</style>
</head>
<body>
<div class="container">
<h1>上传文件</h1>
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" accept=".png, .jpg, .jpeg, .gif, .pdf, .txt" multiple required>
<button type="submit">上传</button>
</form>
<h2>已上传文件</h2>
<ul>
{% for file in files %}
<li>{{ file }}</li>
{% endfor %}
</ul>
</div>
</body>
</html>
完整代码
以下是完整代码:
from flask import Flask, request, redirect, url_for, render_template
import os
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'uploads/'
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 最大文件大小设置为 16MB
# 确保上传文件夹存在
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
def allowed_file(filename):
"""检查文件扩展名是否允许"""
allowed_extensions = {'png', 'jpg', 'jpeg', 'gif', 'pdf', 'txt'}
return '.' in filename and filename.rsplit('.', 1)[1].lower() in allowed_extensions
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST'):
if 'files[]' not in request.files:
return redirect(request.url)
files = request.files.getlist('files[]')
for file in files:
if file and allowed_file(file.filename):
filename = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
file.save(filename)
return redirect(url_for('upload_file'))
files = os.listdir(app.config['UPLOAD_FOLDER'])
return render_template('index.html', files=files)
if __name__ == '__main__':
# 启动 Flask 应用,指定为 0.0.0.0 和 80 端口
app.run(host='0.0.0.0', port=80, debug=True)
运行结果
启动 Flask 应用后,访问 http://<你的IP地址>
,你将看到文件上传界面。你可以选择多个文件进行上传,并在页面上查看已上传的文件列表。
说明
这篇博客详细介绍了如何使用 Flask 创建一个局域网文件上传脚本。通过逐步解析代码片段,解释每个部分的功能,最终展示完整代码。该脚本支持 PC、Linux 和移动设备的文件上传。
爬虫项目推荐
- 使用 Python 指定内容 爬取百度引擎搜索结果-CSDN博客
- 使用Python和Selenium爬取QQ新闻热榜-CSDN博客
- 使用Selenium 和 Python 抓取快手网页大量评论-CSDN博客
- 使用 Python 和 Selenium 爬取快手视频 附源码-CSDN博客
- 如何使用Python、Selenium 爬取酷狗音乐网站的歌曲信息-CSDN博客
- 使用Python 和 Selenium 抓取 酷狗 音乐专辑 附源码-CSDN博客
其他项目推荐
- 使用 TensorFlow 和 CIFAR-10 数据集进行图像分类-CSDN博客
- 在 Python 中编写一个简单的文件搜索工具-CSDN博客
- 使用Python从.exe文件中提取图标_提取文件图标-CSDN博客
- Python 文件搜索程序详解与实现-CSDN博客
- 使用Python 进行文本情感分析-CSDN博客
- 使用 Python和PyQt5 打造 你的专属文件查询工具! 附源码-CSDN博客
- 用Python和PyQt5打造你的专属音乐播放器!轻松创建带封面的音乐列表-CSDN博客
总结
通过这篇博客,我们学习了以下内容:
- 如何导入必要的库并配置 Flask 应用。
- 如何检查文件扩展名是否允许。
- 如何创建文件上传视图并处理文件上传请求。
- 如何启动 Flask 应用并配置 HTML 模板文件。
扩展
- 文件类型扩展:可以扩展允许上传的文件类型,例如添加对
.docx
、.xlsx
等文件的支持。 - 文件大小限制:可以根据需求调整最大文件大小限制。
- 文件存储路径:可以将上传的文件存储在不同的路径或云存储服务中。
- 安全性:可以添加用户认证和权限管理,确保只有授权用户可以上传文件。
相关类型扩展
- 多文件上传:可以实现一次上传多个文件的功能,并在页面上显示上传进度。
- 文件下载:可以实现文件下载功能,允许用户下载已上传的文件。
- 文件管理:可以添加文件删除和重命名功能,方便用户管理已上传的文件。
- 文件预览:可以实现文件预览功能,允许用户在上传前预览文件内容。
结论
通过这篇博客,我们学习了如何使用 Flask 创建一个局域网文件上传脚本,该脚本支持 PC、Linux 和移动设备。希望这篇博客对你有所帮助!
欢迎在评论区留言。继续探索和学习,祝你在深度学习的旅程中取得更多的成果!🚀
希望这个博客对你有所帮助!如果你有任何问题需要进一步的指导,请随时提问。继续加油! 🚀