0

私は過去1時間、Code Igniterフォーラムを精査して、これを理解しようとしてきました。

CodeIgniterを使用してWebアプリケーションのファイルアップロードハンドラーを作成しています。これまでのところ、アップロードを処理するための次のコードがあります。

public function send() {        
    $config = array(
        'upload_path' => 'path/to/my/upload/directory',
        'allowed_types' => 'pdf'
    );

    $this->load->library('upload', $config);

    $this->upload->do_upload('pdf_upload');

    echo "<pre>";
    print_r($this->upload->data());
    echo "</pre>";
    exit();
}

そして私の見解:

<?= $errors ?> <br />
<?= form_open_multipart('/Upload_test/send') ?>
    <p><label for="pdf_upload">File: (PDF ONLY)</label> <input type="file" name="pdf_upload" id="pdf_upload" /></p>
    <p><input type="submit" /></p>
</form>

有効なPDFファイルを選択してフォームを送信すると、次の出力が得られますprint_r()

Array
(
    [file_name] => my_file.pdf
    [file_type] => 
    [file_path] => path/to/my/upload/directory/
    [full_path] => path/to/my/upload/directory/my_file.pdf
    [raw_name] => my_file
    [orig_name] => 
    [client_name] => my_file.pdf
    [file_ext] => .pdf
    [file_size] => 4190
    [is_image] => 
    [image_width] => 
    [image_height] => 
    [image_type] => 
    [image_size_str] => 
)

ファイルタイプが空白です。これを引き起こしている可能性がありますか?私は何が欠けていますか?

4

1 に答える 1

0

関連するが重複していない質問で答えを見つけました:Codeigniterでのアップロード-アップロードしようとしているファイルタイプは許可されていません

Codeigniterバージョン2.1.0を使用している場合は、アップロードライブラリにバグがあります。詳細については、 http://codeigniter.com/forums/viewthread/204725/を参照してください。

基本的に私がしたことは、ファイルアップロードクラス(場所:./system/libraries/Upload.php)の数行のコードを変更することでした

1)行番号1044を変更します

から:

$this->file_type = @mime_content_type($file['tmp_name']);
return;

これに:

$this->file_type = @mime_content_type($file['tmp_name']);
if (strlen($this->file_type) > 0) return; 

2)行番号1058を変更します

から:

@exec('file --brief --mime-type ' . escapeshellarg($file['tmp_path']), $output, $return_code);

これに:

@exec('file --brief --mime-type ' . escapeshellarg($file['tmp_name']), $output, $return_code); 

おそらくお分かりのように、1058行目は存在しない配列値を使用しようとしています。

于 2012-09-05T15:58:49.117 に答える