用Python写一个上传接口
时间: 2023-03-20 18:01:22 浏览: 87
好的,以下是一个使用Python编写的基本文件上传接口的示例代码:
```python
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
# 检查上传的文件是否存在
if 'file' not in request.files:
return 'No file uploaded', 400
file = request.files['file']
# 检查上传的文件名是否为空
if file.filename == '':
return 'Empty filename', 400
# 将文件保存到本地
file.save(file.filename)
return 'File uploaded successfully', 200
if __name__ == '__main__':
app.run()
```
这个接口使用Flask框架,监听HTTP POST请求,上传的文件应该在名为“file”的字段中。接口会将上传的文件保存到服务器上,并返回上传成功的响应。在实际使用中,你可以根据自己的需求对这个代码进行修改和扩展。
相关问题
用Python写一个上传接口,并给出测试用例
好的,下面是一个使用Python编写的简单的文件上传接口的示例代码,以及测试用例:
```python
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
file = request.files['file']
if file:
filename = file.filename
file.save(filename)
return 'File uploaded successfully'
else:
return 'No file was uploaded'
if __name__ == '__main__':
app.run(debug=True)
```
这个接口会监听POST请求,并尝试从请求中获取一个名为“file”的文件对象。如果成功获取到了文件对象,就将其保存在当前工作目录下,文件名与上传时的文件名相同,并返回“File uploaded successfully”;如果没有获取到文件对象,则返回“No file was uploaded”。
接下来是测试用例:
```python
import requests
def test_upload_file():
url = 'http://localhost:5000/upload'
files = {'file': ('test.txt', b'This is a test file.')}
response = requests.post(url, files=files)
assert response.status_code == 200
assert response.text == 'File uploaded successfully'
files = {'file': ('', b'This is another test file.')}
response = requests.post(url, files=files)
assert response.status_code == 200
assert response.text == 'No file was uploaded'
```
这个测试用例会首先向接口上传一个名为“test.txt”的文件,文件内容为“This is a test file.”。然后它会检查接口的响应状态码是否为200,并检查响应内容是否为“File uploaded successfully”。接着,它会再次向接口上传一个空文件,然后检查接口的响应状态码是否为200,并检查响应内容是否为“No file was uploaded”。如果所有的断言都通过了,那么就说明接口工作正常。
用Python写一个上传下载接口
好的,以下是一个用 Python 实现的上传下载接口的示例代码:
上传文件:
```python
from flask import Flask, request, jsonify
import os
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
if 'file' not in request.files:
return jsonify({'error': 'no file part in request'})
file = request.files['file']
if file.filename == '':
return jsonify({'error': 'no selected file'})
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return jsonify({'success': 'file uploaded successfully'})
if __name__ == '__main__':
app.run()
```
在这个示例代码中,我们使用 Flask 框架创建了一个名为 `upload` 的路由,当请求方法为 POST 时,会执行 `upload` 函数。在这个函数中,我们首先检查请求中是否包含文件,如果没有文件,则返回错误信息。如果有文件,我们使用 Flask 提供的 `secure_filename` 函数生成一个安全的文件名,然后将文件保存到指定的上传文件夹中。最后,返回一个包含成功信息的 JSON 响应。
下载文件:
```python
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/download/<filename>')
def download(filename):
path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
if not os.path.isfile(path):
return jsonify({'error': 'file not found'})
return send_file(path, as_attachment=True)
if __name__ == '__main__':
app.run()
```
在这个示例代码中,我们创建了一个名为 `download` 的路由,当请求方法为 GET 时,会执行 `download` 函数。在这个函数中,我们首先检查指定的文件是否存在,如果不存在,则返回错误信息。如果文件存在,我们使用 Flask 提供的 `send_file` 函数将文件作为附件下载到客户端。