当前位置: 首页 > article >正文

Fastadmin系统配置增加配置字段类型

项目有一个上传APK安装包文件的需求,使用框架自带的 ‘文件’ 类型,每次都是不同路径不同文件名。希望保持固定路径和文件名所以就自己写加了一个类型,需要修改的地方如下:

1. app\common\model\Config.php 在 getTypeList 方法中添加自定义类型的英文名称

 'fixedfile'     => __('Fixedfile'),

2.app\admin\lang\zh-cn\general\config.php 添加对应的中文名。

    'Fixedfile'                            => 'APK文件'

3.app\admin\view\general\config\index.html 添加类型对应的html.此处添加的是单文件上传,其中data-url="ajax/apk_upload"是自定义的上传地址。

{case value="fixedfile"}
     <div class="form-inline">
          <input id="c-{$item.name}" class="form-control" size="50" name="row[{$item.name}]" type="text" value="{$item.value|htmlentities}" data-tip="{$item.tip}">
           <span><button type="button" id="faupload-{$item.name}" class="btn btn-danger faupload" data-maxcount="1" data-url="ajax/apk_upload" data-input-id="c-{$item.name}" data-multiple="false" data-mimetype="apk"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
           <span class="msg-box n-right" for="c-{$item.name}"></span>
       </div>
{/case}

4.app\admin\controller\Ajax.php添加自定义上传方法

    /**
     * 上传文件
     */
    public function apk_upload()
    {
        Config::set('default_return_type', 'json');

        //必须还原upload配置,否则分片及cdnurl函数计算错误
        Config::load(APP_PATH . 'extra/upload.php', 'upload');

        $chunkid = $this->request->post("chunkid");
        if ($chunkid) {
            if (!Config::get('upload.chunking')) {
                $this->error(__('Chunk file disabled'));
            }
            $action = $this->request->post("action");
            $chunkindex = $this->request->post("chunkindex/d");
            $chunkcount = $this->request->post("chunkcount/d");
            $filename = $this->request->post("filename");
            $method = $this->request->method(true);
            if ($action == 'merge') {
                $attachment = null;
                //合并分片文件
                try {
                    $upload = new Upload();
                    $attachment = $upload->merge($chunkid, $chunkcount, $filename);
                } catch (UploadException $e) {
                    $this->error($e->getMessage());
                }
                $this->success(__('Uploaded successful'), '', ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
            } elseif ($method == 'clean') {
                //删除冗余的分片文件
                try {
                    $upload = new Upload();
                    $upload->clean($chunkid);
                } catch (UploadException $e) {
                    $this->error($e->getMessage());
                }
                $this->success();
            } else {
                //上传分片文件
                //默认普通上传文件
                $file = $this->request->file('file');
                try {
                    $upload = new Upload($file);
                    $upload->chunk($chunkid, $chunkindex, $chunkcount);
                } catch (UploadException $e) {
                    $this->error($e->getMessage());
                }
                $this->success();
            }
        } else {
            $attachment = null;
            //默认普通上传文件
            $file = $this->request->file('file');
            try {
                $upload = new Upload($file);
                $attachment = $upload->upload('/upload/apk/app_down.apk');
            } catch (UploadException $e) {
                $this->error($e->getMessage());
            }

            $this->success(__('Uploaded successful'), '', ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
        }
    }

代码中的/upload/apk/app_down.apk是文件路径,也可以在data-url中添加路径,但有弊端所以放弃,可以参考:上传图片自定义文件夹方法

以上就通过自定义配置实现了上传文件保持固定路径和名称的功能。


http://www.kler.cn/a/417836.html

相关文章:

  • 【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发三
  • 『 C 』 `##` 在 C 语言宏定义中的作用解析
  • git进阶--6---git stash
  • Linux进程状态及其转换
  • 力扣 121. 买卖股票的最佳时机
  • 读书笔记--分布式架构的异步化和缓存技术原理及应用场景
  • 《安富莱嵌入式周报》第346期:开源2GHz带宽,12bit分辨率,3.2Gsps采样率示波,开源固件安全分析器, 开源口袋电源,开源健康测量,FreeCAD
  • Z2400024基于Java+SSM+mysql+maven开发的社区论坛系统的设计与实现(附源码 配置 文档)
  • 【MySQL】库和表的基本操作
  • VC++网络安全编程范例(12)-PKI编程
  • A02、Java 设计模式优化
  • Chapter 2 - 20. Understanding Congestion in Fibre Channel Fabrics
  • 考前的紧张的一些思考
  • Docker的save和export命令的区别,load和import的区别 笔记241124
  • 上门预约服务小程序开发,便捷生活,一键预约
  • JVM双亲委派机制原理
  • 图像显示的是矩阵的行和列,修改为坐标范围。
  • windows C#-语句
  • HarmonyOS4+NEXT星河版入门与项目实战(25)------UIAbility启动模式(文档编辑案例)
  • SpringMVC-08-json
  • 1.1 数据结构的基本概念
  • (免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发
  • LLM学习笔记(9)Transformers 库与 pipeline() 函数(中)
  • 开源用户体验调查管理平台Formbricks
  • Easyexcel(7-自定义样式)
  • Linux高阶——1124—