boto3使用upload_file上传的文件可以是相对路径吗?或者绝对路径,请详细举例
时间: 2024-03-01 22:55:34 浏览: 124
python-s3:使用Flask和Boto3上载和下载文件的简单示例
boto3中的`upload_file`函数可以接受相对路径或绝对路径作为上传文件的路径参数,但需要注意的是,相对路径是相对于当前工作目录而言的。下面是两个简单的例子:
1. 使用相对路径上传文件
假设当前工作目录为`/home/user`,上传的文件路径为`file.txt`,则可以使用以下代码上传该文件:
```python
import boto3
s3_client = boto3.client('s3')
bucket_name = 'my-bucket'
file_path = 'file.txt'
s3_client.upload_file(file_path, bucket_name, file_path)
```
这里的`file_path`参数是相对路径,即`file.txt`文件位于当前工作目录下。
2. 使用绝对路径上传文件
假设要上传的文件路径为`/home/user/file.txt`,则可以使用以下代码上传该文件:
```python
import boto3
s3_client = boto3.client('s3')
bucket_name = 'my-bucket'
file_path = '/home/user/file.txt'
s3_client.upload_file(file_path, bucket_name, file_path.split('/')[-1])
```
这里的`file_path`参数是绝对路径,即`/home/user/file.txt`文件的完整路径。需要注意的是,在上传时需要使用`file_path.split('/')[-1]`获取文件名作为S3存储桶中的对象名。这是因为S3对象名只能是字符串类型,不能包含目录路径。
阅读全文