Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 有了AWS,我为什么可以';无法访问我的文件,无论它是如何存在的?_Django_Amazon Web Services_Amazon S3 - Fatal编程技术网

Django 有了AWS,我为什么可以';无法访问我的文件,无论它是如何存在的?

Django 有了AWS,我为什么可以';无法访问我的文件,无论它是如何存在的?,django,amazon-web-services,amazon-s3,Django,Amazon Web Services,Amazon S3,大家好,真棒 问题在于django 1.11和python 3.5 从6个小时以来我一直在努力 当我访问浏览器中的链接时,它会正确显示文件 http://bucket-name.s3.amazonaws.com/media/public/path/to/file.pdf 但当我这么做的时候: with open(absolute_path, 'wb') as output: output.write(object_content) 我得到以下错误: 异常类型:FileNotFound

大家好,真棒

问题在于django 1.11和python 3.5

从6个小时以来我一直在努力

当我访问浏览器中的链接时,它会正确显示文件

http://bucket-name.s3.amazonaws.com/media/public/path/to/file.pdf
但当我这么做的时候:

with open(absolute_path, 'wb') as output:
    output.write(object_content)
我得到以下错误:

异常类型:FileNotFoundError 异常值:[Errno 2]没有这样的文件或目录:
http://bucket-name.s3.amazonaws.com/media/public/path/to/file.pdf
'


为什么我无法访问该文件?

如果您想将S3对象的主体读入变量,那么可以使用以下命令

import boto3
s3 = boto3.resource('s3')
obj = s3.Object('my-bucket', 'cat.jpg')
body = obj.get()['Body'].read()
如果要将文件从S3下载到本地文件,则:

import boto3
import botocore
s3 = boto3.resource('s3')

try:
    s3.Bucket('my-bucket').download_file('cat.jpg', '/tmp/cat.jpg')
except botocore.exceptions.ClientError as e:
    if e.response['Error']['Code'] == "404":
        print("The object does not exist.")
    else:
        raise
如果要将文件上载到S3:

import boto3
s3 = boto3.resource('s3')
s3.Bucket('my-bucket').put_object(Key='test.jpg', Body=data)

如果您想将S3对象的主体读入变量中,那么可以使用如下方法

import boto3
s3 = boto3.resource('s3')
obj = s3.Object('my-bucket', 'cat.jpg')
body = obj.get()['Body'].read()
如果要将文件从S3下载到本地文件,则:

import boto3
import botocore
s3 = boto3.resource('s3')

try:
    s3.Bucket('my-bucket').download_file('cat.jpg', '/tmp/cat.jpg')
except botocore.exceptions.ClientError as e:
    if e.response['Error']['Code'] == "404":
        print("The object does not exist.")
    else:
        raise
如果要将文件上载到S3:

import boto3
s3 = boto3.resource('s3')
s3.Bucket('my-bucket').put_object(Key='test.jpg', Body=data)

我对Django不太熟悉,但是你能在远程URL上使用
open
?这不是仅用于打开本地文件吗?使用请求怎么样
request=requests.get(绝对路径)
这不是Django特有的,@MattClark是正确的。无法使用
open
打开URL。S3文件不是磁盘文件。您应该使用类似于
requests
或更好的AWS API库,例如
boto
Ok got it@MattClark!我正在使用
boto
@Selcuk。我想要的是将来自AWS bucket的字节文件写入另一个现有文件,这样我就可以将其添加到我的zip包中。我对Django不太熟悉,但是你能在远程URL上使用
open
?这不是仅用于打开本地文件吗?使用请求怎么样
request=requests.get(绝对路径)
这不是Django特有的,@MattClark是正确的。无法使用
open
打开URL。S3文件不是磁盘文件。您应该使用类似于
requests
或更好的AWS API库,例如
boto
Ok got it@MattClark!我正在使用
boto
@Selcuk。我想要的是将来自AWS bucket的字节文件写入另一个现有文件,这样我就可以将它添加到我的zip-packageNo!我想从S3下载文件…我想把来自AWS bucket的字节文件写入另一个现有文件,这样我就可以将它添加到我的zip包Interest
body=obj.get()['body'].read()
从这一行开始,文件是bytes对象,我想将其转换为文件,以便将其添加到zip包中。这是非常有用的,我想上去投票吧,没有足够的声誉不!我想从S3下载文件…我想把来自AWS bucket的字节文件写入另一个现有文件,这样我就可以将它添加到我的zip包Interest
body=obj.get()['body'].read()
从这一行开始,文件是bytes对象,我想将其转换为文件,以便将其添加到zip包中。这是非常有用的,我想上去投票吧,没有足够的声誉