2013-02-09 16 views
6

JQuery dosya yükleme eklentisini güncellemeye çalışıyorum, böylece bir dosya yüklediğinizde, varolan bir dosyayı, bir ad ile yeniden adlandırmak yerine aynı ada sahip olan bir dosyanın üzerine yazar.jquery dosyası yükleme - nasıl yeniden yazılır dosyayı yeniden adlandırır DEĞİLDİR

Bu bağlantıyı kapsadığı değişikliği uyguladık: https://github.com/blueimp/jQuery-File-Upload/issues/1965

ama bu çalışma almak için bu eklentiyi üzerine görünmüyor olabilir? Bu konuda herhangi bir yönlendirme çok takdir jQuery File Upload by bluimp, how to replace instead of renaming

:

henüz cevabı burada varolan açık soru var.

+0

ile

return $this->get_unique_filename( $file_path, $this->fix_file_extension($file_path, $name, $size, $type, $error, $index, $content_range), $size, $type, $error, $index, $content_range ); 

yerine? Benim de ona ihtiyacım var. Teşekkürler –

+0

bir bakışa bakın: https://stackoverflow.com/a/47333596/2065594 –

cevap

-2

Yüklemeye başlamak için geri arama içinde ajax isteğinde bulunun ve dosyayı veri diskinden silin. Dosya adını data.files [0] .name ile bulabilirsiniz.

$("a[title='"+ data.files[0].name + "']").each(function() { 
     $(this).closest('tr').fadeOut(); 
    }); 

ve bunu solmaya:

Sonra sadece bu gibi eski bağlantıya sahip olan tr arayın.

Saygılar

+0

Üzgünüm, ama bir tablo satırında DOM işleminin eldeki soruyla nasıl bir _anything_ olduğunu anlayamıyorum , ya da hatta yükleme önce dosyayı silme önerisi ... – Peter

2

Aynı dosya üzerine yazma seçeneğine de ihtiyacım vardı.

PHP UploadHandler.php dosyasını kullanarak Benim için çalışan gerçekten hızlı bir kesmek yaptım. Eminim daha iyi bir yol var, ama bu başkalarına yardımcı olabilir.

İşleyiciyi 'upcount_name_callback' için arayın ve döndürülen ifadeyi (dizin) numaralandırmanın çıkarılmasıyla değiştirin. Eğer çok basit wiki var olan UploadHandler.php kullanılıyorsa Ben geri dönmek için lütfen orijinal return ifadesini :)

protected function upcount_name_callback($matches) { 
    $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; 
    $ext = isset($matches[2]) ? $matches[2] : ''; 
    return ''.$ext; 
    /* return ' ('.$index.')'.$ext; */ 
} 
8

bıraktı. Bununla

return $this -> get_unique_filename($this -> trim_file_name($name, $type, $index, $content_range), $type, $index, $content_range); 

: get_file_name yöntemde bu çizgiyi değiştirmeniz gerekir

return $this -> trim_file_name($name, $type, $index, $content_range); 
+1

Lol, dostum, çözümün bana yardımcı oldu, ama aslında bu benim durumumda işe yaramadı. O zaman kendi cevabımı yazacağım. –

0

github (here) belgelerine düşünün ve yazan yere aşağı kaydırma "Nasıl bir dosya kravat Yüklemenin "yaşam döngüsü boyunca bir eleman düğümü". yapılan geri arama işlevine

$(function() { 
    $('#fileupload').fileupload({ 
     dataType: 'json', 
     add: function (e, data) { 
      data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
      data.submit(); 
     }, 
     done: function (e, data) { 
      data.context.text('Upload finished.'); 
     } 
    }); 
}); 

dikkat: Bu kodudur. veri nesnesini genişletirseniz, bir data.files nesnesinin yanı sıra data.result nesnesinin olduğunu unutmayın. data.result, numaralı sunucuda dosyasının adını içerir. Bu nedenle, sunucuda yeni yüklenen dosyanın adı yukarıda verilen örnek betiğe dayanarak data.result.files [0] .name şeklindedir.

Biliyorum bu @MKoosej çözümünü çalıştı birisi

0

yardımcı olur.Benim durumumda iyi çalıştı, ama aynı zamanda sadece bir dosya adı döndürmek için trim_file_name düzenledim (herhangi bir dosya adını data.csv'ye dönüştüren bir yükleyici yapmak zorundaydım). Ayrıca, yeniden adlandırmak yerine dosya adını yeniden yazmam gereken diğer yükleyici sürümünü yapmak zorunda kaldım, ancak farklı adlara sahip farklı dosyalar farklı kalmalı. Bu yüzden, @MKoosej çözümünü denediğimde, sadece dosya ismi olmadan .jpeg gibi bir dosyayla dosya yüklemeye başladı. Bunu koymak çok başında fonksiyon get_unique_filename yılında : Yani, bu çözüm bulduk

$oldName=$name; 

yerine $name ait $oldName döndü ve gayet iyiydi.

1

2016 UPDATE to MKoosej 's fix! UploadHandler.php → korumalı fonksiyon get_file_name olarak ... belki bir dosyanın üzerine için bir çözüm buldunuz

return $this -> trim_file_name($file_path, $name, $size, $type, $error, $index, $content_range); 
İlgili konular