2011-08-21 5 views
1

HTML5 끌어서 놓기 파일 업로드 기능을 내 프로젝트 KCFinder에 통합하려고합니다. 이 코드는 forum의 누군가가 작성했습니다. 그것은 잘 작동합니다. 이름이있는 디렉토리에 파일을 업로드하려고 할 때 유일한 문제는 특수 유니 코드 문자 (키릴 문자 등)를 포함합니다. 파일을 업로드해야하는 디렉토리 경로는 $ _GET [ 'dir']을 통해 전송됩니다. 내가 업로드 버튼 대신 drag'n'drop을 사용하는 경우 업로드가 작동하고 나는 (방화범을 사용) POST 데이터에 Ajax로 유니 코드 문자 게시

Content-Disposition: form-data; name="dir" 

files/ÑеÑÑ 

를 참조하십시오. 실제 디렉토리 경로는 files/тест입니다. 내가 끌어와 같은 디렉토리에 내 컴퓨터에서 파일을 삭제하면 , 오류가 발생했습니다

드래그 앤 드롭 오류없이 작동

String contains an invalid character" code: "5 
xhr.sendAsBinary(postbody); 
나는에 업로드하기 위해 노력하고있어 디렉토리 이름 만이 아닌 유니 코드가있는 경우 문자. encodeURIComponent()를 사용하여 'dir'매개 변수를 인코딩하려했으나이 경우 오류가 발생했지만 응답 한 PHP는 인코딩 된 파일을 가져옵니다 ("파일/% D1 % 82 % D0 % B5 % D1 % 81 % D1 % 82")

이 프로젝트에는 힘내가있다. 더 많은 하이퍼 링크를 게시 할 수 없습니다. SourceForge 프로젝트에서 찾을 수 있습니다.

답변

3

JavaScript 문자열은 URL 인코딩 문자열 (0xD182는 UTF-16 코드 단위 등)에서 볼 수있는 것처럼 UTF-16으로 인코딩됩니다. AJAX 요청에서 문자열을 명시 적 UTF-8 문자열로 인코딩해야합니다.

+0

자바 스크립트 UTF-8 인코딩 루틴이 필요한 경우 MD5 해싱 알고리즘의 JS 구현의 일부로 찾을 수 있습니다. [over webtoolkit.info] (http://www.webtoolkit.info/javascript-md5 .html). – DaveRandom

+0

@DaveRandom : 감사합니다! UTF8을 만드는 방법을 빠르게 살펴 봤지만 내장 된 솔루션을 볼 수 없었습니다. 좋은 물건. –

+0

@DaveRandom : 예! 이것은 내 문제를 해결합니다! 10q! –