繁体   English   中英

使用Ajax和Boto3 for Django将文件上传到S3

[英]Upload file to S3 using Ajax and Boto3 for Django

我有一个django项目,我想在其中将所有图像上传到S3。 我已经安装了boto3,并且能够打印出我的存储桶。 因此,我知道我有一定的联系。 现在,我的下一步是使用ajax将文件推送到S3。 以下是我目前的设置。 这种方法行得通吗? 我偶然发现的一个问题是Chrome返回C:\\ fakepath \\ filename的事实。

Django视图:

def change_project_image(request):
    image = request.POST['image']

    data = open(image, 'rb')
    s3.Bucket('bucket-name').put_object(Key='filename.jpg', Body=data)

    return HttpResponse('temporary return')

Javascript:

$('#project-image-upload').on('change', function(){
    var image = $(this).val();

    $.post('/project/change-project-image/', {image:image} function(data){

    }, 'json');
});

HTML:

<label class="btn btn-default btn-file">
    Browse <input id="project-image-upload" type="file">
</label>

因此,我采取了另一种方法,并且能够访问视图中的对象。 我将输入添加到可发布到所需视图的表单中,然后按如下方式处理文件:

def change_project_image(request):
    image = request.FILES['image']
    #now I need to pull the temporary path of image and pass it to boto

    data = open('path_to_file', 'rb')
    s3.Bucket('bucket_name').put_object(Key='filename.jpg', Body=data)

我遇到的问题是我忘记在表单中添加enctype =“ multipart / form-data”,因此request.FILES ['image']为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM