Python 保存上传的图片到本地

在 Web 开发过程中,经常需要用户上传图片。这些图片可能需要保存到本地服务器上,以便后续使用和展示。Python 提供了各种库和方法来处理上传的图片,并将其保存到本地。本文将介绍如何使用 Python 保存上传的图片到本地,并提供代码示例。

1. 准备工作

在开始之前,我们需要安装 Python 的 Flask 框架和 Flask-Uploads 扩展。Flask 是一个轻量级的 Web 框架,而 Flask-Uploads 是一个用于处理文件上传的扩展。

pip install flask flask-uploads

2. 创建 Flask 应用

首先,我们需要创建一个 Flask 应用。可以使用以下代码创建一个简单的 Flask 应用:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

以上代码创建了一个简单的 Flask 应用,当访问根路径时,会返回 "Hello World!"。

3. 处理上传的图片

接下来,我们需要创建一个上传图片的页面,并在用户上传图片后将其保存到本地。

首先,需要在 Flask 应用中添加一个路由函数来处理上传的图片。使用 request 对象可以获取上传的文件。然后,使用 save 方法将文件保存到指定的路径。

from flask import Flask, request
from flask_uploads import UploadSet, configure_uploads, IMAGES

app = Flask(__name__)
photos = UploadSet('photos', IMAGES)

app.config['UPLOADED_PHOTOS_DEST'] = 'uploads'  # 保存上传文件的目录
configure_uploads(app, photos)

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST' and 'photo' in request.files:
        filename = photos.save(request.files['photo'])
        return f'Photo uploaded: {filename}'
    return '''
    <!doctype html>
    <title>Upload new File</title>
    Upload new File
    <form method=post enctype=multipart/form-data>
        <input type=file name=photo>
        <input type=submit value=Upload>
    </form>
    '''

if __name__ == '__main__':
    app.run()

以上代码中,UploadSet 类用于定义上传文件集合,IMAGES 是一个预定义的集合,包含了常见的图片格式。app.config['UPLOADED_PHOTOS_DEST'] 用于设置保存上传文件的目录。configure_uploads 方法用于关联应用与上传集合。

upload 函数中,首先判断请求方法是否为 POST,且是否包含名为 photo 的文件。如果满足条件,调用 save 方法保存文件,并返回上传成功的文件名。如果不满足条件,返回一个包含上传表单的 HTML 页面。

4. 运行应用

最后,我们可以运行 Flask 应用来测试图片上传功能。在终端中运行以下命令:

python app.py

然后,在浏览器中访问 http://localhost:5000/upload,将会显示一个上传表单。选择一个图片文件并点击上传按钮。上传成功后,会显示上传成功的文件名。

总结

本文介绍了如何使用 Python 保存上传的图片到本地服务器。我们使用了 Flask 框架和 Flask-Uploads 扩展来处理图片上传,并提供了代码示例。希望本文对你有所帮助!