2014-09-11 7 views
1

내가 URL을 통해 파일 이름을 전달해야합니다, 예를 들면 :URL을 통해 파일 이름을 전달하는 방법은 무엇입니까?

http://example.com/images/niceplace.jpg 

파일 이름이 공백 문자, 예를 들어이 포함 된 경우 제가하는 데 문제는 다음과 같습니다

http://example.com/images/nice place.jpg 

또는

http://example.com/images/nice%20place.jpg 

이 두 URL에 대해 codeigniter는 빈 문자에 대해 불평합니다 : "제출 한 URI가 문자를 허용하지 않았습니다."

이 문제를 해결하려면 어떻게해야합니까?

permitted_uri_charsconfig.php에 공백 문자를 추가 할 수 있다는 것을 알고 있지만 파일 이름에 다른 허용되지 않는 문자가있을 수 있으므로 더 나은 해결책을 찾고 있습니다. 파일 이름이 & 문자, 그리고 몇 가지 다른 사람을 포함 할 때

http://php.net/urlencode

사실, 당신은 또 다른 문제로 실행됩니다

답변

0

솔루션을 찾았습니다.

URL은 rawurlencode()을 사용하여 생성됩니다.

그런 다음 images 컨트롤러 내에서 파일 이름은 rawurldecode(html_entity_decode($filename))을 사용하여 디코딩됩니다.

필자는 UTF-8 문자로 생각할 수있는 몇 가지 특수 문자로이 솔루션을 성공적으로 테스트했습니다. 당신이 특별한 문자를 원하는 경우 또는

$encrypt=$this->encrypt->encode($param1) & $this->encrypt->decode($encrypt) 

: 지정된 조건에 대한 URL의의와 함께 작업 할 수있는 더 좋은 방법의

0

당신은이 방법을 사용할 수 있습니다. urlencode는 가능한 모든 문제를 제거합니다.

+2

그는 codeigniter를 사용하고 있으며이 프레임 워크로 인해 특정 문자를 사용할 수 없습니다. 따라서 urlencode/urldecode를 사용하는 것만 큼 단순하지는 않습니다. –

+0

덕분에 @DaveChen, 나는 운이없이'urlencode'를 작동 시키려고 노력했다. – emrea

+0

또는 URL에 공백 문자 (예 : % 또는 다른 문자 허용)를 지정하려면 config.php 파일을 업데이트하십시오. $ config [ 'permitted_uri_chars'] – k10gaurav

0

이 구성 옵션은 일부 문자가 URI으로 전달되는 것을 방지하기 위해 생성되며 일부 경우에는 둘러 볼 수 있습니다. 당신이 그것을 저장할 때 http://domain.com/images/?image=test.jpg

  • 파일 이름에서 (밑줄 등을 대시) 이외의 모든 alfanumeric 문자를 제거하고 다른 일 수도있다 - 매개 변수로

    1. 패스 파일 이름 : 나는 가장 적합한 솔루션을 생각합니다. 제 생각에는 다른 경우에 어떤 성격을 가진 다른 문제에 직면 할 수 있기 때문에 더 낫습니다.
  • +0

    첫 번째 해결 방법은 "URI의 허용되지 않는 문자"문제에 직면합니다. – emrea

    0

    하나는/인코딩 URL 보안을 유지하기 위해 암호화/보안 클래스를 사용하여 URL 매개 변수를 암호화하는 것입니다 URL에 허용 된 다음 config.php 파일에서 구성 설정을 변경하십시오.

    File Location: application/config/config.php 
    $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; 
    

    애플리케이션에 허용하려는 모든 문자를 오른쪽에 추가하십시오.

    관련 문제