1

私はそれを理解することができないように思われるので、助けを求めてより多くの聴衆に到達するために、これをPyroCMSフォーラムとクロスポストしています。

PyroCMSファイルライブラリを使用して複数のファイルをアップロードしようとすると、問題が発生します。ライブラリを呼び出すときにファイルを単独でアップロードするように見えます。また、ライブラリをバイパスしてmove_uploaded_fileを介してテストするときにファイルをアップロードすることもできます。コントローラーで次の(少し削除された)コードを作成しました。

public function upload($id)
{
    // Folder selected or redirect
    $id or redirect('admin/mis/resources');

    // Run on validation
    if ($_FILES)
    {
        if (count($_FILES['userfile']['name'] > 0))
        {                
            foreach ($_FILES['userfile']['name'] as $file)
            {                    
                $upload = Files::upload($id, $file);
            }
        }                                  

        redirect('admin/vle/resources/contents/'.$id);            
    }

    $this->template->build('admin/resources/upload');
}

ただし、このコードを実行すると、ファイルはアップロードされません。アップロードを出力すると、次のメッセージが表示されます。

配列([ステータス]=>[メッセージ]=>

アップロードするファイルを選択していません。

Files ::uploadに複数のファイルを渡す方法を一生理解できないようです。私は何かが欠けていると確信しています。ただし、テスト目的でコードをローカルでこれに変更すると、ファイルが正常にアップロードされるため、一般的にファイルをアップロードできないわけではありません。

if($_FILES)
{
    if(count($_FILES['userfile']['name'])) 
    {
        foreach ($_FILES['userfile']['name'] as $file) 
        {
            $img = "c:/wamp/www/testupload/files/".$file;

            move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $img);
        }
    }   
}

ファイルライブラリのアップロード方法はこちらhttps://github.com/pyrocms/pyrocms/blob/2.2/develop/system/cms/modules/files/libraries/Files.php#L333

私は頭がいくらか回転しているところまでいろいろなことを試しましたが、今はこれを理解しようとしています。だから誰かが助けることができればそれはありがたいです。

4

1 に答える 1

3

ファイルライブラリは現在、1つの要素によってアップロードされた複数のファイルをサポートしていません。そのため、ファイルの配列ではなく、「userfile」ファイル入力から単一のファイルを見つけようとしています。

これは機能するはずです:

<form method="post" action="/upload/1" enctype="multipart/form-data">
    <input name="userfile" type="file"/>
    <input name="secondfile" type="file"/>
</form

public function upload($folder_id)
{
    $upload = Files::upload($folder_id, 'Descriptive Name', 'userfile');
    $second_upload = Files::upload($folder_id, 'Some Name', 'secondfile');
}

PyroCMSの管理パネルは、BlueImpjQueryアップローダーを使用して複数のファイルをアップロードします。おそらく、そのようなJSソリューションはあなたにとってうまくいくでしょうか?これにより、ユーザーは各アップロードのステータスを通知するプログレスバーを取得し、各アップロードがいつ完了するかを確認できます。

于 2013-01-13T00:05:16.450 に答える