2016-06-24 8 views
0

私はS3にすべての画像をアップロードしたいdjangoプロジェクトを持っています。私はboto3をインストールしてバケツを印刷することができます。したがって、私は明確なつながりを持っていることを知っています。今私の次のステップは、ajaxを使ってS3にファイルをプッシュすることです。以下は現在の設定です。このアプローチは機能しますか?私が遭遇した1つの問題は、ChromeがC:\ fakepath \ filenameを返すという事実です。DjangoのAjaxとBoto3を使ってS3にファイルをアップロード

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> 
+0

これを試すとどうなりますか? –

+0

@ JordonPhillipsコンソールで500エラーが返されます。/ project/change-project-image/ のIOError [Errno 2]このようなファイルまたはディレクトリはありません:u'C:\\ fakepath \\ e46.jpg ' –

+0

@SamMunroe 'image = request.POST ['image'] 'エラーはイメージがないことを示します。 'request.FILES ['image']'を試してみてください。 – ravigadila

答えて

0

は、だから私は別のアプローチを取り、ビュー内のオブジェクトにアクセスすることができました。私は私の希望のビューにどの投稿フォームへの入力を加えた後、私は次のようにファイルを扱う:

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」を追加するのを忘れていることでしたフォーム['image']は空です。

関連する問題