0

私を助けてください。これは、phpCodeigniterでの私の最初のプロジェクトです。実際、私はJava開発者です。

2つの画像パスをテーブルにアップロードし、その画像をルートフォルダにアップロードしたいと思います。たとえば、アップロードでは、同じテーブルに画像以外の多くのフィールドがあります。フォームからこれらのフィールドを追加/編集できます(codeigniterを使用して正常に実装しました)

しかし、現在、画像のアップロードで問題が発生しています。codeigniterを使用して画像をアップロードする方法が正確にわかりません。2日目から一人でやってみましたが問題が解決しませんでした

エラー:エラーは表示されません。単に画像パスとしてdbテーブルに0の値を挿入します。 画像をアップロードする方法が正しくないと思います。

myviews.php

 <? echo form_open_multipart('Booksetups/book'); ?>


                 <input type="file" name="img1" /> 
                 <input type="file" name="img2" />
               <?php          
                                               <br/>
                          <? echo  form_submit($submitbtn);   echo form_reset($resetbtn); ?>  
                 <? echo form_close(); ?>  
4

3 に答える 3

2

$_FILES最初に覚えておくべきことは、CI は入力オブジェクトに追加されないということです。などにアクセスする必要があります$_FILES['img1']。したがって、これらは次のとおりです。

'img1'=>$this->input->post('img1'),//image path is not inserting But all other fields are inserting into db 
'img2'=>$this->input->post('img2'),//image path is not inserting

次のようにする必要があります。

'img1'=>$_FILES['img1']['name'],//image path is not inserting But all other fields are inserting into db 
'img2'=>$_FILES['img2']['name'],//image path is not inserting

データベースに何を保存するかによって異なります。アップロードクラスを介してファイルなどの名前を変更できます。それらのドキュメントを読むことをお勧めします。

次に、実際のアップロード メソッドを呼び出しているようには見えません。

$this->upload->do_upload()

これが必要かどうかはわかりませんが...複数の構成が必要な場合は、複数のファイルに異なるパスを持たせたい場合は、複数のファイルの構成を再定義する必要があります...

$config['upload_path'] = 'uploads/'; 
$config['allowed_types'] = 'gif|jpg|jpeg|png'; 
$config['max_size'] = '1000'; 
$config['max_width'] = '1920'; 
$config['max_height'] = '1280';  
$this->load->library('upload', $config);
$this->upload->do_upload("img1");

$config['upload_path'] = 'some_other_dir/'; 
$config['allowed_types'] = 'gif|jpg|jpeg|png'; 
$config['max_size'] = '1000'; 
$config['max_width'] = '1920'; 
$config['max_height'] = '1280';  
$this->upload->initialize($config);
$this->upload->do_upload("img2");

それらに異なるパスを持たせたくない場合は、例のようにライブラリにロードし、do_upload()パラメータを渡さずに呼び出すことができます。

ポイントを逃した場合、またはさらに情報が必要な場合はお知らせください。更新する場合があります。

于 2013-01-16T19:41:42.470 に答える
0

問題は、サーバーサイドで html を使用していることです。PHP は HTML を知りませんが、php. クライアント側またはブラウザは HTML を認識します。

<input type="file" name="img1" /> 
<input type="file" name="img2" />

適切な php メソッドを使用して html を生成します。

第二に、あなたのファイルアップロードパラメーターはcodeigniterユーザーガイドとは異なります

$config['upload_path'] = 'uploads/';
$config['upload_path'] = './uploads/'; 

ファイルパスが間違っていると、他の問題が発生する可能性があります

于 2013-01-17T04:42:34.937 に答える
-1

アップロード クラス ライブラリを初期化していないようです:

$this->upload->initialize($config);

また、ライブラリをロードしますか:

$this->load->library('upload');
于 2013-01-16T19:14:05.790 に答える