HTML前端模版代码:
<div class="row">
<div class="file_model col-md-12">
<script type="text/html" id="files-item-tpl">
<li id="saved-file{id}">
<input id="file-{id}" type="hidden" name="file_urls[]" value="{filepath}">
<input class="form-control" id="file-{id}-name" type="text" name="file_names[]" value="{name}"
style="width: 200px;" title="文件名称">
<a class="btn btn-info" id="file-{id}-preview" href="{preview_url}" target="_blank"><i class="fa fa-download fa-fw"></i></a>
<a class="btn btn-default" href="javascript:uploadOne('文件上传','#file-{id}','file');"><i class="fa fa-upload fa-fw"></i></a>
<a class="btn btn-danger" href="javascript:(function(){$('#saved-file{id}').remove();})();"><i class="fa fa-trash fa-fw"></i></a>
<a class="btn btn-success" href="javascript:(function(){$('#saved-file{id}').before($('#saved-file{id}').next());})();"><i class="fa fa-arrow-down fa-fw"></i></a>
</li>
</script>
<div class="upload_file_div">
<h3>附件</h3>
<ul id="files" class="pic-list list-unstyled form-inline">
</ul>
<a href="javascript:uploadMultiFile('附件上传','#files','files-item-tpl','file');"
class="btn btn-default">选择文件</a>
</div>
</div>
</div>
<hr>
JS代码
var c=[];
for (var k = 0; k < $('input[name="file_urls[]"]').length; k++) {
var e={
name:$('input[name="file_names[]"]')[k].value,
url:$('input[name="file_urls[]"]')[k].value
}
c.push(e);
}
console.log(c)
//c为数组格式的files信息
var files={files:c}
data={files:files}
PHP中
$ins['files']=json_encode($this->request->post("files"));
//直接存储到mysql中的表的files键中
编辑页面
PHP 上执行
注意 默认files值是json存储你需要使用json_decode将其转为array.
$info->files=json_decode($info->files,TRUE)
$this->assign(["info"=>$info]);
#传递给模版
前段模版:给前段传值$info,默认的files 不用操作
<span>附件</span>
<div>
<ul id="files" class="pic-list list-unstyled form-inline">
<notempty name="info.files.files">
<foreach name="info.files.files" item="vo">
<php>$file_url=cmf_get_file_download_url($vo['url']);</php>
<li id="saved-file{$key}">
<input id="file-{$key}" type="hidden" name="file_urls[]"
value="{$vo.url}">
<input class="form-control" id="file-{$key}-name" type="text"
name="file_names[]"
value="{$vo.name}" style="width: 200px;" title="图片名称">
<a class="btn btn-info" id="file-{$key}-preview" href="{$file_url}" target="_blank"><i class="fa fa-download fa-fw"></i></a>
<a class="btn btn-default" href="javascript:uploadOne('文件上传','#file-{$key}','file');"><i class="fa fa-upload fa-fw"></i></a>
<a class="btn btn-danger" href="javascript:(function(){$('#saved-file{$key}').remove();})();"><i class="fa fa-trash fa-fw"></i></a>
<a class="btn btn-success" href="javascript:(function(){$('#saved-file{$key}').before($('#saved-file{$key}').next());})();"><i class="fa fa-arrow-down fa-fw"></i></a>
</li>
</foreach>
</notempty>
</ul>
<a href="javascript:uploadMultiFile('附件上传','#files','files-item-tpl','file');"
class="btn btn-default">选择文件</a>
</div>
编辑修改的话如前面的一样!
Tips:
在模型定义中使用protected $type 进行自动转换,如:可以设置为array 这样可以直接插入array的files
<?php
namespace app\model;
use think\Model;
class User extends Model
{
protected $type = [
'status' => 'integer',
'score' => 'float',
'birthday' => 'datetime',
'files' => 'array',
];
}