gpt4 book ai didi

php - Yii framework 2.0如何上传多个文件

转载 作者:可可西里 更新时间:2023-10-31 23:14:47 26 4
gpt4 key购买 nike

使用 Yii 框架 2.0 我希望能够上传多个文件。关注 Yii 2 documentation ,在 Upload Multiple Files 小节下,我有以下模型。

class Newsletter extends \yii\db\ActiveRecord {
public $attachment_file;

public function rules()
{
return [
[['attachment_file'], 'file', 'maxFiles' => 5],
];
}

public function upload() {

if ($this->validate()) {
foreach ($this->attachment_file as $file) {
echo '<pre>'; print_r($file); echo '</pre>';
}
return true;
} else {
return false;
}
}
}

以下是我的看法。

<?php use yii\widgets\ActiveForm; ?>

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

<?= $form->field($model, 'attachment_file[]')->fileInput(['multiple' => true,]) ?>

<button>Submit</button>

<?php ActiveForm::end() ?>

在我的 Controller 中,我有以下代码片段。

if (Yii::$app->request->isPost) {
$model->attachment_file = UploadedFile::getInstances($model, 'attachment_file');
if ($model->upload()) {
die();
// file is uploaded successfully
return;
}
}

通过上面的所有代码,我希望我可以用一个输入文件元素选择多个文件。但这并不像我期望的那样。当我选择具有相同输入文件元素的多个文件并点击提交时,我只看到了最后选择的文件。所以我开始怀疑我在做什么。我做错了什么吗?还是我需要多次添加输入文件元素,一个上传文件一个输入文件元素?

最佳答案

看看我尝试了什么:查看代码

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

<?= $form->field($uploadForm, 'files[]')->fileInput(['multiple' => true]) ?>

<button class="btn btn-primary">Upload</button>
<?php ActiveForm::end() ?>

在 Controller 中

    use yii\web\UploadedFile;
use app\models\MultipleUploadForm;
use app\models\ProductImage;
.......
function actionUploadImage() {
$form = new MultipleUploadForm();

if (Yii::$app->request->isPost) {
$form->files = UploadedFile::getInstances($form, 'files');

if ($form->files && $form->validate()) {
foreach ($form->files as $file) {
$image = new ProductImage();
if ($image->save()) {
$file->saveAs($image->getPath());
}
}

}
}

return $this->render('uploadImage', [
'uploadForm' => $form,
]);
}

MultipleUploadForm 模型

use yii\base\Model;
use yii\web\UploadedFile;

class MultipleUploadForm extends Model
{
/**
* @var UploadedFile[] files uploaded
*/
public $files;

/**
* @return array the validation rules.
*/
public function rules()
{
return [
[['files'], 'file', 'extensions' => 'jpg', 'mimeTypes' => 'image/jpeg', 'maxFiles' => 10, 'skipOnEmpty' => false],
];
}
}

这段代码对我有用。希望这对你也有用。

关于php - Yii framework 2.0如何上传多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32217193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com