私は codeigniter を使用していますが、いくつかのテキスト ファイルをアップロードしようとすると、奇妙なケースが見つかりました。
( CI doc ) すべて正常に動作することを示すメソッド ドキュメントを使用しますが、文字列 ' // ' (引用符なし) を含むファイルをアップロードしようとすると、「アップロードしようとしているファイル タイプは許可されていません」という結果が得られます。
何か案が?
使用コード: (コントローラー)
function do_upload() {
$config['upload_path'] = APPPATH.'uploads/';
$config['allowed_types'] = 'txt|csv';
$config['max_size'] = '1024';
$config['max_width'] = '0';
$config['max_height'] = '0';
$this->load->library('upload', $config);
@var_dump($_FILES['userfile']); // debug
if (!$this->upload->do_upload()) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
} else
echo "<br>upload ok";
}
upload_form.php (ビュー):
<?php
if (isset($error)) echo $error;
echo form_open_multipart('supervisor/do_upload');
echo form_label('File', 'userfile');
echo form_upload('userfile');
echo form_submit('submit', 'Upload');
echo form_close()
?>
例: (アップロード用の .txt)
[file1.txt]:
THIS IS A TEXT FILE # work fine
[file2.txt]:
THIS IS A // TEXT FILE # fail! note: {blank}//{blank}
出力 (file1.txt のアップロード)
array(5) { ["name"]=> string(9) "file1.txt" ["type"]=> string(10) "text/plain" ["tmp_name"]=> string(14) "/tmp/phpLVaMGs" ["error"]=> int(0) ["size"]=> int(19) }
upload ok
出力 (file2.txt のアップロード)
array(5) { ["name"]=> string(9) "file2.txt" ["type"]=> string(10) "text/plain" ["tmp_name"]=> string(14) "/tmp/phpFu4znR" ["error"]=> int(0) ["size"]=> int(22) }
The filetype you are attempting to upload is not allowed.
...
Firebug POST: (file2.txt のアップロード)
userfile THIS IS A // TEXT FILE
submit Upload
Fuente
-----------------------------15028408581691128039842883428
Content-Disposition: form-data; name="userfile"; filename="file2.txt"
Content-Type: text/plain
THIS IS A // TEXT FILE
-----------------------------15028408581691128039842883428
Content-Disposition: form-data; name="submit"
Upload
-----------------------------15028408581691128039842883428--