2

これが私のBrandController.phphttps : //gist.github.com/a958926883b9e7cc68f7#file-brandcontroller-php-L53です

カスタムモジュールのすべてのファイルを調べて、カスタムモジュールメーカーから提供されたファイルと比較しましたが、大きな違いは見つかりませんでした。

4

4 に答える 4

2

複数のファイルをアップロードしようとしていますか? 同じ名前の複数の fileupload 要素を使用している場合は、アイテムの配列が取得されます。

したがって、次の行が呼び出されると、

//this way the name is saved in DB
$data['filename'] = $_FILES['filename']['name'];

価値があるでしょう

["name"]=>array(2) {
      [0]=>string(9)"file0.txt"
      [1]=>string(9)"file1.txt"
}

各 $_FILES['filename']['name'] をループするようにコードを更新し、ファイルを個別にアップロードして保存する必要があります。

于 2012-12-27T23:29:38.490 に答える
2

知らないうちに複数のファイルをアップロードしている可能性があります。それが意図されていない場合は、HTML をチェックして、タグの name 属性をチェックしてください。(このような) 配列であってはなりません。

<input type="file" name="my_files[]" />

データベースに Array() しか表示されない場合は、実際に複数のファイルをアップロードしていることを意味します。ループを使用して処理できます。

1 つの画像をアップロードしていると確信している場合は、@Palanikumar の提案に従うことができます。print_r() を使用して $_FILES を表示し、ここに貼り付けます。それを使用したくない場合は、使用できます

json_encode($the-data-you-are-going-to-insert-to-the-database);

print_r() 関数を配置する場所がわからない場合は、このファイルの 56 行目以降に配置できます。

https://gist.github.com/desbest/a958926883b9e7cc68f7#file-brandcontroller-php-L53

if(isset($_FILES['filename']['name']) && $_FILES['filename']['name'] != '') {
 print_r($_FILES);
 die;

saveAction() が ajax 関数内で呼び出されている場合は、ajax 応答をログに記録する必要があります。あなたがjqueryを使用していると仮定して..

$ajaxResponse = $.POST({...});
console.log($ajaxResponse.responseText);

次に、ブラウザのコンソール内で表示できます。何も表示されない場合は、非非同期リクエストを使用できます

$ajaxResponse = $.POST({
    // your options,
    // your another option,
    async: FALSE
});
于 2013-02-23T05:17:31.940 に答える
1

通常、ファイルのアップロードは配列形式で返されます。アップロードされた各ファイルには、名前、タイプ、サイズ、一時的な名前、エラーなどの情報が含まれます。ファイル情報は、印刷関数 ( print_r($_FILES) ) を使用して取得できます。したがって、ファイルの名前を表示したい場合は、次のようなものを使用する必要があります$_FILES['filename']['name']

印刷機能とデバッグツールを使用し、ループを使用してファイル情報を保存します。

詳細については、こちらをご確認ください

于 2013-02-19T11:58:16.350 に答える
0

フォームの enctype を設定していないため、画像は送信されません。コードをに更新しました

$form = new Varien_Data_Form(array( 'enctype' => 'multipart/form-data'));
于 2013-03-05T10:55:30.950 に答える