2013-05-21 1 views
1

내 업 로더의 기초로 Plupload jQuery UI 위젯을 사용하고 있습니다. 위젯을 사용하면 추가 된 파일을 드래그하여 드래그 할 수 있습니다.업로드하기 전에 Plupload에서 파일의 이름을 어떻게 바꿉니 까?

업로드는 양식 제출시 자동으로 시작되며 사용자가 수동으로 시작하지는 않습니다. 업로드하는 동안 UI가 차단되어 사용자가 더 이상 파일을 추가 할 수 없습니다.

업로드가 시작되기 전에 업로드 할 첫 번째 파일 (jQuery UI 위젯 목록 맨 위에있는 파일)이 '1'이고 두 번째 '2 ' 등등.

bob.jpg 
ann.jpg 
doug.jpg 
chris.jpg 

내가 그들에게 이름을 변경해야 할 : 다음 목록 주어진 예를 들어

,

1.jpg 
2.jpg 
3.jpg 
4.jpg 

사용자가 새 파일을 추가하거나 기존 파일을 제거 할 때이 작동합니다. 사용자가 드래그하여 파일을 다시 정렬 할 때 작동하지 않는 것은 입니다. 업 로더에 대한 인스턴스 코드는 다음과 같습니다.

$('#' + div_id).plupload({ 
    runtimes: 'html5, flash, silverlight', 
    url: 'upload', 
    unique_names: false, 
    rename: true, 
    sortable: true, 
    buttons: { browse: true, start: false, stop: false },  

    // Flash settings 
    flash_swf_url: 'js/plupload/plupload.flash.swf', 

    // Silverlight settings 
    silverlight_xap_url : 'js/plupload/plupload.silverlight.xap', 

init: { 
    QueueChanged: function(up) { 
    for (var i = 0; i < up.files.length; i++) { 
     up.files[i].name = (i+1); 
    } 
    } 
} 
}); 

사용자가 재주문을 끌 때 감지하는 방법을 알 수 없습니다. 실패하면 대기열의 업로드가 처음 시작될 때 발생하는 이벤트가 표시되지 않습니다. 나는 단순히 모든 Plupload 인스턴스를 얻기 위해 jQuery를 사용 QueueChanged() 이벤트를 사용하는 대신

와 jQuery의 .each() 루프 내에서이 코드 사용 : 경우 다른 사람에

+1

BeforeUpload 이벤트를 사용하여 대기열에있는 파일의 색인을 검색하고 이름을 변경 했습니까? (고백해야 할 것은 단지 무작위적인 생각이다) – jbl

+0

그럴 수도 있지만 더 쉬운 해결 방법을 실제로 발견했다. 귀하의 솔루션은 다른 사람들을 도울 수 있습니다. – Garry

답변

2

이 문제를 통해 제공

var regex = /(?:\.([^.]+))?$/; 
for (var i = 0; i < uploader.files.length; i++) { 
    var ext = regex.exec(uploader.files[i].name)[1]; 
    uploader.files[i].name = (ext == undefined) ? (i+1) : (i+1) + '.' + ext; 
} 
uploader.start(); 

이를 나는 업로드하기 직전까지 이름 바꾸기를하지 않습니다. 또한 업로드하기 전에 UI 위젯에서 파일의 이름을 바꾸지 않는 추가 이점이 있습니다 (이로 인해 최종 사용자에게 혼란을 피할 수 있음).

+0

재미있는 발견! 고맙습니다. @ 갤리 – arraystack