- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前在我的系统中使用 Yii2 PHP 框架和 Kartik FileInput
小部件。我用过 followed this guide输入文件上传到多个文件,但它在我的系统中不起作用。我目前使用 MongoDB 作为我的数据库。这是我目前的进度(原始的,仅单次上传):
Controller , actionCreate
if($model->load(Yii::$app->request->post())) {
$model->attachment = UploadedFile::getInstance($model, 'attachment');
if($model->attachment) {
$path = 'archive/contact/' . $model->attachment->baseName . '.' . $model->attachment->extension;
$count = 0;
{
while(file_exists($path)) {
$path = 'archive/contact/' . $model->attachment->baseName . '_'.$count.'.' . $model->attachment->extension;
$count++;
}
}
$model->attachment->saveAs($path);
$model->attachment = $path;
}
$model->save();
} else {
return $this->renderAjax('create', [
'model' => $model,
]);
}
查看
echo FileInput::widget([
'model' => $model,
'attribute' => 'attachment[]',
'name' => 'attachment[]',
'options' => [
'multiple' => true,
'accept' => 'image/*'
],
'pluginOptions' => [
'showCaption' => false,
'showRemove' => false,
'showUpload' => false,
'browseClass' => 'btn btn-primary btn-block',
'browseIcon' => '<i class="glyphicon glyphicon-camera"></i> ',
'browseLabel' => 'Attach Business Card',
'allowedFileExtensions' => ['jpg','gif','png'],
'overwriteInitial' => false
],
]);
我还将包括我的模型
class Contact extends ActiveRecord
{
/**
* @inheritdoc
*/
public static function collectionName()
{
return ['iaoy', 'contact'];
}
/**
* @inheritdoc
*/
public function attributes()
{
return [
'_id', 'fname','lname','email','phone','address','contact_type','business_name','notes','company_id','date_added','attachment','sort'
];
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['_id', 'fname','lname','email','phone','address','contact_type','business_name','notes','company_id','date_added','attachment','sort'], 'safe'],
[['fname','lname','contact_type','business_name'], 'required'],
[['attachment'], 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 500*500],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
//'contact_id' => 'Contact ID',
'_id' => 'Contact ID',
'contact_type' => 'Contact Type',
'business_name' => 'Business Name',
'fname' => 'First Name',
'lname' => 'Last Name',
'email' => 'Email',
'phone' => 'Phone',
'address' => 'Address',
'notes' => 'Notes',
'attachment' => 'Attachment',
'company_id' => 'Company ID',
];
}
}
如何在已经实现的情况下实现多文件上传?任何想法都受到高度赞赏。
编辑:
到目前为止,这是我的多文件上传代码。我没有将它与我当前的代码(单个文件上传)混合,而是制作了一个新的 MVC。这基本上就是我在上面提到的指南中找到的内容,只需很少的修改:
型号
<?php
namespace app\models;
use yii\base\Model;
use yii\web\UploadedFile;
class Upload extends Model
{
public $file;
public function attributes()
{
return [
'file', 'urls'
];
}
public function rules()
{
return [
[['file', 'urls'], 'safe'],
[['file'], 'file','extensions' => 'png, jpg'],
[['urls'],'string'],
];
}
}
查看
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use kartik\file\FileInput;
$form = ActiveForm::begin(['options'=>['enctype'=>'multipart/form-data']]);
?>
<?php
echo FileInput::widget([
'model' => $model,
'attribute' => 'file[]',
'name' => 'file[]',
'options' => [
'multiple' => true,
'accept' => 'image/*'
],
'pluginOptions' => [
'showCaption' => false,
'showRemove' => false,
'showUpload' => false,
'browseClass' => 'btn btn-primary btn-block',
'browseIcon' => '<i class="glyphicon glyphicon-camera"></i> ',
'browseLabel' => 'Attach Business Card',
'allowedFileExtensions' => ['jpg','gif','png'],
'overwriteInitial' => false
],
]);
?>
<button>Submit</button>
<?php ActiveForm::end(); ?>
Controller
public function actionUpload()
{
$model = new Upload();
if ($model->load(Yii::$app->request->post())) {
$model->file = UploadedFile::getInstances($model, 'file');
foreach ($model->file as $key => $file) {
$file->saveAs('archive/reimbursement/'. $file->baseName . '.' . $file->extension);//Upload files to server
$model->urls .= 'archive/reimbursement/' . $file->baseName . '.' . $file->extension.'**';//Save file names in database- '**' is for separating images
}
$model->save();
return $this->redirect(['viewuploads', 'id' => $model->id]);
} else {
return $this->render('upload', [
'model' => $model,
]);
}
}
我还在我的 Contact.php 模型 rules
函数中添加了 'urls'
最佳答案
试试这个:
Controller :你应该将图像名称保存在数据库中('$model->urls')
public function actionUpload()
{
$model = new Upload();
if ($model->load(Yii::$app->request->post())) {
$model->file = UploadedFile::getInstances($model, 'file');
foreach ($model->file as $key => $file) {
$file->saveAs('/uploads/'. $file->baseName . '.' . $file->extension);//Upload files to server
$model->urls .= 'uploads/' . $file->baseName . '.' . $file->extension.'**';//Save file names in database- '**' is for separating images
}
$model->save();
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('upload', [
'model' => $model,
]);
}
}
查看
<?= $form->field($model, 'file[]')->widget(FileInput::classname(), [
'options' => ['multiple' => 'true'],
]) ?>
模型
class Upload extends Model
{
public $file;
public function rules()
{
return [
[['file'], 'file','maxFiles' => 6],
[['urls'],'string'],
];
}
显示图像的另一个 View
<?php
$images=explode('**',trim($model->urls));
foreach($images as $image)
{
echo Html::img(Url::to('@web/' . $image, true));
}
?>
关于php - 使用 Kartik FileInput 小部件保存多个图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32645420/
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!