2012-07-06 2 views
0

이 사이트를 검색 한 결과 답변을 찾지 못하는 것 같습니다. 나는 10 초 오디오 샘플을 업로드하고 BBCode와 플래시 플레이어 (같은 페이지에)로 업로드 된 파일을 표시하는 간단한 AjaxUpload 스크립트를 가지고있다. uploadSample.php은 파일 이름의 공백을 밑줄로 대체하여 파일 이름의 공백을 처리하지만, <input type="text"/>의 생성 된 코드는 여전히 PHP 스크립트가 파일 이름을 제거했다고 생각하기 때문에 파일 이름에 공백이 있으므로 BBCode가 잘못되어 flashplayer가 파일을 찾을 수 없습니다.AjaxUpload 스크립트는 파일 이름에 공백을 남기기

PHP 스크립트가 공백을 제거하기 전에 스크립트가 원래 파일 이름을 가져 오는 것은 분명하므로 업로드 후 밑줄로 완성 된 적절한 파일 이름을 얻는 방법이 있습니까?

jQuery를

$(function() { 
     var url = "uploads/samples/"; 
     var btnUpload = jQuery('#up'); 
     var status = jQuery('#status'); 
     new AjaxUpload(btnUpload, { 
      action: 'uploadSample.php', 
      name: 'uploadfile', 
      onSubmit: function(file, ext) { 
       status.html('<img src="public/upload/ajax-loader.gif">'); 
      }, 
      onComplete: function(file, response) { 
       if (response === "success") { 
        $("#status").fadeOut(); 
        $("#bb").val('[sample=' + url + file + ']'); 
        $("#flash").html("<embed width='400' height='27' quality='best' src='public/upload/player.swf' flashvars='audioUrl=" + url + file + "' type='application/x-shockwave-flash'>"); 
       } else { 

        // run error code 
       } 
      } 
     }); 

    }); 

바이올린 (필요한 경우) : http://jsfiddle.net/Nn5gG/1/

답변

1

변경 다음 링크 출력하는 코드 라인 : 자바 스크립트를 알려줍니다

$("#flash").html("<embed width='400' height='27' quality='best' src='public/upload/player.swf' flashvars='audioUrl=" + url + file.replace(' ', '_') + "' type='application/x-shockwave-flash'>"); 

을 filenme의 공백을 밑줄로 대체하십시오.

다른 해결책은 출력 결과를 반환하기 전에 PHP에서 파일 이름이 이미 대체되었는지 확인하는 것입니다.

+0

환상적인!. 모든 공간이 대체되었는지 확인하기 위해'file.replace ('', '_')'를'file.replace (/ \ s/g, '_')'로 변경해야했습니다. 감사! –

+0

@Karl : 천만에요. 뿐만 아니라 정규식에 대한 좋은 캐치 – hellsgate

0

PHP는 j에 아무런 영향을주지 않기 때문에 파일 이름은 여전히 ​​원래 파일명입니다. 응답에서 파일 이름을 반환하거나 js의 공백을 바꿀 수 있습니다.

관련 문제