我正在尝试使用DropZone上载多个文件。但在控制器中检索文件名时出现问题。请帮我找出哪里出了错。我已经在下面发布了我的代码。
DropZone的HTML代码:
<div class="dropzone dropzone-file-area" id="my-dropzone"></div>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update',
['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary',
'id' => 'imageSubmit']) ?>
</div>
脚本文件,用于:
<?php
$htmlString = "http://localhost/project/backend/web/news/create";
$this->registerJs(
"Dropzone.autoDiscover = false;
$(document).ready(function() {
var myDropzone = new Dropzone('#my-dropzone', {
url: '$htmlString',
autoProcessQueue: false,
enqueueForUpload: false,
autoDiscover: false,
addRemoveLinks: true,
uploadMultiple: true,
paramName: 'News[imgFiles]',
maxFiles: 10,
maxFilesize: 2,
parallelUploads: 10,
acceptedFiles: 'image/*',
params: {
'_csrf-backend': $('input[name=_csrf-backend]').val()
},
success: function (file, response) {
var imgName = response;
file.previewElement.classList.add('dz-success');
console.log('Successfully uploaded :' + imgName);
},
init: function () {
var myDropzone = this;
var submitButton = document.querySelector('#imageSubmit');
submitButton.addEventListener('click', function (file) {
if (myDropzone.getQueuedFiles().length > 0) {
var submitfiles = false;
if (submitfiles === true) {
submitfiles = false;
return;
}
file.preventDefault();
myDropzone.processQueue();
myDropzone.on('complete', function (data, xhr, formData) {
submitfiles = true;
$('#imageSubmit').trigger('click');
});
}
});
}
});
});", $this::POS_END);
在控制器actionCreate()方法中:
public function actionCreate()
{
$model = new News();
if (Yii::$app->request->isAjax) {
if ($model->load(Yii::$app->request->post())) {
if ($model->save()) {
Yii::$app->session->setFlash("success", "success");
return true;
} else {
print_r($model);
exit;
}
}
}
if ($model->load(Yii::$app->request->post()) ) {
$model->imageFiles = UploadedFile::getInstances($model, 'imgFiles');
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
当我在拖放框中添加图片并点击提交按钮时,拖放框中的图片显示成功结果。但是当我试着打印$模型的时候-
作曲家需要--able-dist perminder-klair/yii2-dropzone"dev-master"
。它用于表单属性:
<?= $form->field($model, 'city_id')->widget(DropZone::className(), [
'options' => [
'maxFilesize' => '2',
],
'clientEvents' => [
'complete' => "function(file){console.log(file)}",
'removedfile' => "function(file){alert(file.name + ' is removed')}",
],
]) ?>
它是控制器动作:
public function actionUpload()
{
$fileName = 'file';
$uploadPath = './files';
if (isset($_FILES[$fileName])) {
$file = \yii\web\UploadedFile::getInstanceByName($fileName);
//Print file data
//print_r($file);
if ($file->saveAs($uploadPath . '/' . $file->name)) {
//Now save file data to database
echo \yii\helpers\Json::encode($file);
}
}
return false;
}
我试图理解以下文档: Transferutility.UploadDirectory null null null
但是如何为多个文件做呢? PS.在webflux中有没有另一种上传一组文件的方法?
问题内容: 这是我上传多个文件的代码: HTML代码: 密码: 但是它会上传单个文件,而不是多个文件。 问题答案: 在模板中,你需要在上传输入中添加属性: 然后在查看功能中,上传的文件可以通过列表获取。循环此列表并在每个项目上调用save()方法将它们保存在给定路径中: 此外,你可能需要使用secure_filename()来清洁文件名: 你也可以使用此方法生成随机文件名。 完整演示 视图: im
我决定上传几个图像文件使用文件输入小部件 控制员/行动 模型 这是印刷品 后果 结果是数组中只有最后一个文件。如果我不使用这个小部件,那么一切都是正常加载的数组。 如何加载和处理一组照片?
问题内容: 我正在使用和Path上传单个文件。代码如下: 对于一个文件,这很好用。我需要测试多个文件上传。如何传递多个文件? 问题答案: Selenium仍然不支持多个文件上传: 但是,根据webdriver:upload多个文件,您应该能够 在Chrome中 通过使用换行符连接文件路径 来解决该问题: 另请参阅: 文件上传-在FireFox中上传多个文件
问题内容: 我想使用PHP上传文件,但问题是我不知道要上传多少文件。 我的问题是,如果使用该如何上传文件? 我将仅添加“文件”框,并使用JavaScript创建更多要上传的文件输入,但是如何在PHP中处理它们呢? 问题答案: 请参阅:$ _FILES ,处理文件上传