127.0.0.1 - - [31/May/2023 16:48:18] "POST /photo/upload HTTP/1.1" 500 - Traceback (most recent call last): File "C:\Users\sks\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask\app.py", line 2088, in __call__ return self.wsgi_app(environ, start_response) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sks\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask\app.py", line 2073, in wsgi_app response = self.handle_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sks\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask\app.py", line 2070, in wsgi_app response = self.full_dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sks\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask\app.py", line 1515, in full_dispatch_request rv = self.handle_user_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sks\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask\app.py", line 1513, in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sks\AppData\Local\Programs\Python\Python311\Lib\site-packages\flask\app.py", line 1499, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\python\uploads.py", line 30, in uploads file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name)) AttributeError: 'str' object has no attribute 'save'
时间: 2023-06-30 21:26:33 浏览: 55
这个错误是由于在`uploads.py`文件的`uploads`函数中,尝试对一个字符串变量`file_name`调用`save`方法,导致出错。这是因为`file_name`只是一个文件名字符串,而不是一个文件对象。
为了修复这个错误,你需要使用`request.files`对象从POST请求中获取上传的文件对象,然后对这个文件对象调用`save`方法。以下是一个修改后的示例代码:
```python
from flask import Flask, request
app = Flask(__name__)
# 设置上传文件保存的路径
app.config['UPLOAD_FOLDER'] = '/path/to/uploads'
@app.route('/photo/upload', methods=['POST'])
def uploads():
# 从POST请求中获取上传的文件对象
file = request.files['file']
# 获取上传的文件名
file_name = file.filename
# 将上传的文件保存到指定的路径
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name))
# 返回上传成功的信息
return 'File uploaded successfully!'
```
在这个示例中,我们首先使用`request.files`对象获取上传的文件对象,并使用文件名字符串`file_name`来保存文件。注意,我们使用`os.path.join`方法来构建文件的完整路径,这样可以确保路径分隔符的正确性。