2011-02-15 17 views
0

私はCodeIgniterを使用していますが、私はAJAXを使ってアップロードを処理するコントローラを持っています。CodeIgniterと角括弧付きのパラメータ

コントローラはファイルの名前をパラメータとして受け取ることを期待しています。したがって、URLにはほとんどすべての種類の文字を受け入れる必要があります。

マイJavaScriptは "マイ%20file%20%5BX%5D.mpg" となる "[X] .AVIマイファイル" encodeURI()、名前、したがってファイルを使用してファイル名をエンコードします。これまでのところすべて素晴らしい。

このパラメータをCodeIgniterに渡すと問題が発生します。 URLは http://localhost/myproject/uploader/upload/My%20file%20%5BX%5D.avi

のように見えるとコントローラのヘッダ:私は$ PARAM1を印刷するとき

function upload($param1='') { } 

は、私が得た:

string(8) "My_file_" 

私はurldecode()を使用する場合でも、それは同じまま。したがって、CodeIgniterは符号化された角括弧を使用しています。どんな助け?

ありがとうございます。

+0

POSTではなくGETを使用している理由は何ですか? – Ross

+0

私はValums Ajax Upload(http://valums.com/ajax-upload/)を使用しています。これは、クエリ文字列でファイル名をparamとして送信する必要があります。 –

+0

あなたの例は間違っています。 encodeURI( "My File [x] .avi")== My%20File%20%5Bx%5D.avi –

答えて

1

$ config ['global_xss_filtering']がtrueに設定されていると思いますので、CIがvarsをクリーニングしています。この場合、falseに設定するか、input-> xss_clean関数を微調整することができます。

+0

ええと、XSSフィルタリングは$ _POSTとクッキーにのみ適用されます。 My $ param1はクエリ文字列の一部です($ _GETの一部ではありません)。とにかくアドバイスをありがとう! http://codeigniter.com/user_guide/libraries/input.html –

+0

設定でこのリストにさらに文字([、、%]など)を追加する必要があります。 $ config ['permitted_uri_chars'] = 'a-z 0-9〜%。:_ \ - ';そして、私はもはや実際にファイル名として元のものか特別な文字を持つものが格納されているのかは分かりません。 – shikhar