利用Bottle框架实现文件上传和下载功能
Bottle是一个简单而快速的Python Web框架,它适用于小型应用程序和API开发。在Bottle框架中实现文件上传和下载功能非常简单。下面是一个使用Bottle框架实现文件上传和下载功能的例子。
首先,我们需要安装Bottle框架。可以使用pip命令来安装Bottle:
pip install bottle
接下来,我们创建一个名为app.py的Python文件,并在文件中导入Bottle模块:
from bottle import route, run, request, static_file
### 文件上传功能
要实现文件上传功能,我们需要创建一个POST请求处理函数,并使用request.files获取上传的文件。在处理函数中,我们可以将文件保存到服务器的指定目录中。以下是一个实现文件上传功能的例子:
@route('/upload', method='POST')
def upload():
upload_file = request.files.get('file')
if upload_file:
save_path = '/path/to/save/file/' + upload_file.filename
upload_file.save(save_path)
return f'File {upload_file.filename} is uploaded successfully.'
else:
return 'No file uploaded.'
在这个例子中,我们定义了一个处理POST请求的upload函数,函数路径为/upload。我们使用request.files.get('file')来获取上传的文件,并将文件保存到服务器的指定目录中。如果文件成功上传,则返回成功消息,如果没有文件上传,则返回相应的提示消息。
### 文件下载功能
要实现文件下载功能,我们需要创建一个GET请求处理函数,并使用static_file函数来提供文件下载。以下是一个实现文件下载功能的例子:
@route('/download/<filename>')
def download(filename):
return static_file(filename, root='/path/to/download/file', download=filename)
在这个例子中,我们定义了一个处理GET请求的download函数,函数路径为/download/<filename>。我们使用static_file函数来提供文件下载,指定要下载的文件名和文件保存的根目录。download=filename参数将强制浏览器下载文件,而不是在浏览器中打开。
注意:在定义处理函数前,我们需要使用@route装饰器将函数路径与处理函数绑定起来。
最后,我们可以使用run函数来运行应用程序,并指定主机和端口号。以下是完整的例子:
from bottle import route, run, request, static_file
@route('/upload', method='POST')
def upload():
upload_file = request.files.get('file')
if upload_file:
save_path = '/path/to/save/file/' + upload_file.filename
upload_file.save(save_path)
return f'File {upload_file.filename} is uploaded successfully.'
else:
return 'No file uploaded.'
@route('/download/<filename>')
def download(filename):
return static_file(filename, root='/path/to/download/file', download=filename)
if __name__ == '__main__':
run(host='localhost', port=8000)
在运行应用程序之前,请确保将/path/to/save/file和/path/to/download/file替换为您自己的目录路径。
现在,您可以通过发送POST请求到/upload来上传文件,或通过访问/download/<filename>来下载文件。
