2016-04-02 30 views
0

AW3 S3'e yüklemek için S3Direct kullanıyorum ve gayet iyi çalışıyor. Ancak aynı isimde farklı bir dosya yüklediğimde, üzerine yazar. Sürümleri açtım ve şimdi dosyayı sunucudaki farklı bir URL ile saklıyor ama Django'daki referans URL aynı, bu yüzden son yüklenen videonun iki tanesini bitiriyorum.Django S3Direct dosyaları yeniden adlandırma

Bunu hiçbir şey yapmayan javascript'e eklemeye çalıştım. görünümünde

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) 

Ve bu:

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 

Ancak bu S3 geçirilen dosya adı orijinal olarak, sadece başka bir versiyon yarattı aynıydı, ben terminalde beklediğim döndü. Ve veritabanına gönderilen url, orijinal dosya adı ve S3'teki orijinal sürüm için URL'ydi.

cevap

0

Çalıştım. S3 onları iki nokta üst üste sahip db depolanan url anlam kodlar çünkü url get_upload_params()

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

NB içinde başka bir bakış dibinde: Zaman iki nokta üst üste ('') olamaz ve gerçek url yapmaz, bu yüzden referans olamazsınız.

İlgili konular