2016-04-02 6 views
0

私はS3Directを使用してAWS S3にアップロードしています。うまくいきます。しかし、同じ名前の別のファイルをアップロードすると上書きされます。私はバージョンをオンにした後、別のURLを持つファイルをサーバーに保存しますが、Djangoの参照URLは同じなので、最後にアップロードした2つのビデオで終わります。Django S3Directファイルの名前変更

私はこれをjavascriptに追加しようとしましたが、何もしませんでした。ビュー内の

var getUploadURL = function(e) { 
    var el  = e.target.parentElement, 
     file  = el.querySelector('.file-input').files[0], 
     dest  = el.querySelector('.file-dest').value, 
     url  = el.getAttribute('data-policy-url'), 
     form  = new FormData(), 
     headers = {'X-CSRFToken': getCookie('csrftoken')} 

    /* These vars were added by me */ 
    var currentdate = new Date($.now()); 
     var datetime = currentdate.getDate() + "/" 
      + (currentdate.getMonth()+1) + "/" 
      + currentdate.getFullYear() + " @ " 
      + currentdate.getHours() + ":" 
      + currentdate.getMinutes() + ":" 
      + currentdate.getSeconds(); 

    form.append('type', file.type) 
    form.append('ext', file.datetime)/* Added by me */ 
    form.append('name', file.name) 
    form.append('dest', dest) 

そして、この:これは私がターミナルに期待したもの返さ

def get_upload_params(request): 
    /* The first two lines were already there */ 
    content_type = request.POST['type'] 
    filename = request.POST['name'] 
    print "Filename before time added: ", filename 
    ext = os.path.splitext(filename)[1] 
    name = os.path.splitext(filename)[0] 

    time_now = datetime.datetime.now().strftime("%Y-%m-%d+%H:%M:%S") 
    filename = name + time_now + ext 
    print "Filename after time added: ", filename 

しかしS3に渡されたファイル名が、元と同じであった、それだけで別のバージョンを作成しました。そして、データベースに送られたURLはS3の元のファイル名と元のバージョンのURLでした。

答えて

0

私はそれを試しました。 S3は、DBに格納されたURLは、コロンを持っている意味、それらをコードしているため、URLで:時間はコロン(「」)を持つことができません。get_upload_params()

time_now = datetime.datetime.now().strftime("%Y-%m-%dT%H-%M-%S") 
    key = '%s/${filename}%s' % (key, time_now) 

NBの他のビューの下部に実際のURLはそうではないので、あなたはそれを参照することはできません。

関連する問題