TKCORE框架学习之入门篇(八)--上传控件

上传控件

上传控件是将本地文件上传到服务器。在服务端,对上传的文件通常会直接放在服务器的硬盘上,或者存入数据库中。现在由于云OSS服务器的兴起,当然也可以将上传的文件放入OSS服务器上。

Toolkit采用配置插件的方式来对上传到服务器的文件进行处理。当前系统内置了三种插件:一以二进制的方式存储到数据库中,二是文件形式存储在服务器上,三是文件形式上传到本地服务器上。当然,根据需要还可以开发出更多的插件,比如存储到七牛云,或者采用数据库和文件两种混合方式存储。

根据Toolkit的数据库定义规范,上传控件需要在数据表中定义的基础字段:

  1. FILE_NAME:文件名,数据库字段建议类型:varchar(255)
  2. SIZE:文件大小,数据库字段建议类型:int
  3. CONTENT_TYPE:MIME类型,数据库字段建议类型:varchar(100)
  4. FILE_PATH:文件路径(上传阿里云时为Url地址),数据库字段建议类型:varchar(255)
  5. CONTENT:根据上传文件的类型,如果上传数据不需保存至数据库,只保存至硬盘,此字段可以没有;如果是文本型,可以选用TEXT类型;如果是二进制类型,可以选用BLOB类型,在SQL SERVER中BLOB类型为IMAGE类型;如果采用系统默认的集中保存,这个字段是int,将是对应附件表的Id

存储到数据库中

  • 以这种方式上传图片,数据库设计需符合框架的规范:

      [PIC_FILE_NAME] varchar(255) 
      [PIC_FILE_SIZE] int  NULL
      [PIC_FILE_TYPE] varchar(100) 
      [PIC_FILE_PATH] varchar(255) 
      [PIC_FILE_ID] int  
    

    在Xml/Data文件夹文件夹下的xml文件中按照如下方法使用:

      <tk:Field DataType="string" IsEmpty="false">
        <tk:FieldName>PIC_FILE_NAME</tk:FieldName>
        <tk:NickName>file_name</tk:NickName>
        <tk:DisplayName>
          <tk:Content>图片</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerLine" UnitNum="1"/>
        <tk:Control Control="Upload" Order="75" DefaultShow="Detail Update"/>
        <tk:ListDetail>
          <tk:DetailDisplay>
            <tk:UploadDisplay/>
          </tk:DetailDisplay>
        </tk:ListDetail>
        <tk:Upload ServerPathField="file_path" MimeTypeField="file_type" SizeField="file_size" ContentField="file_id" IsView="true" FileExt="jpg">
          <tk:DbUploadProcessor CacheFile="false"/>
        </tk:Upload>
      </tk:Field>
      <tk:Field DataType="int">
        <tk:FieldName>PIC_FILE_SIZE</tk:FieldName>
        <tk:NickName>file_size</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件大小</tk:Content>
        </tk:DisplayName>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="60" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="string">
        <tk:FieldName>PIC_FILE_TYPE</tk:FieldName>
        <tk:NickName>file_type</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件类型</tk:Content>
        </tk:DisplayName>
        <tk:Length>50</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="70" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="string">
        <tk:FieldName>PIC_FILE_PATH</tk:FieldName>
        <tk:NickName>file_path</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件路径</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="80" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="int">
        <tk:FieldName>PIC_FILE_ID</tk:FieldName>
        <tk:NickName>file_id</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件ID</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="80" DefaultShow="All"/>
      </tk:Field>
    

DbUploadProcessor标签

​ CacheFile:是否让浏览器缓存文件

上传到本地服务器

  • 以这种方式上传图片,数据库设计需符合框架的规范:

      [PIC_FILE_NAME] varchar(255) 
      [PIC_FILE_SIZE] int  NULL
      [PIC_FILE_TYPE] varchar(100) 
      [PIC_FILE_PATH] varchar(255) 
    

    在Xml/Data文件夹文件夹下的xml文件中按照如下方法使用:

      <tk:Field DataType="string" IsEmpty="false">
        <tk:FieldName>PIC_FILE_NAME</tk:FieldName>
        <tk:NickName>file_name</tk:NickName>
        <tk:DisplayName>
          <tk:Content>图片</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerLine" UnitNum="1"/>
        <tk:Control Control="Upload" Order="75" DefaultShow="Detail Update"/>
        <tk:ListDetail>
            <tk:DetailDisplay>
            <tk:UploadDisplay/>
            </tk:DetailDisplay>
        </tk:ListDetail>
          <tk:Upload ServerPathField="file_path" MimeTypeField="file_type" SizeField="file_size" IsView="true" FileExt="jpg">
          <tk:FileUploadProcessor BaseUploadPath="MainUploadPath" BaseVirtualPath="MainVirtual"/>
          </tk:Upload>
      </tk:Field>
      <tk:Field DataType="int">
        <tk:FieldName>PIC_FILE_SIZE</tk:FieldName>
        <tk:NickName>file_size</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件大小</tk:Content>
        </tk:DisplayName>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="60" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="string">
        <tk:FieldName>PIC_FILE_TYPE</tk:FieldName>
        <tk:NickName>file_type</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件类型</tk:Content>
        </tk:DisplayName>
        <tk:Length>50</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="70" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="string">
        <tk:FieldName>PIC_FILE_PATH</tk:FieldName>
        <tk:NickName>file_path</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件路径</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="80" DefaultShow="All"/>
      </tk:Field>
    

    FileUploadProcessor标签

    BaseUploadPath:上传的基地址,需要配置绝对路径(例如:C:/Project/Upload),具体填写Host名称,需要在Application中配置

    BaseVirtualPath:虚拟基地址,具体填写Host名称,需要在Application中配置

    Application.xml的相关配置

      <tk:Hosts>
        <tk:Host Key="MainUploadPath" Value="C:/Project/Upload" />
        <tk:Host Key="MainVirtual" Value="~/Upload/" />
      </tk:Hosts>
    

上传到阿里云(需要引用YJC.Toolkit.AliyunOSS.dll)

  • 以这种方式上传图片,数据库设计需符合框架的规范:

      [PIC_FILE_NAME] varchar(255) 
      [PIC_FILE_SIZE] int  NULL
      [PIC_FILE_TYPE] varchar(100) 
      [PIC_FILE_PATH] varchar(255) 
      [PIC_FILE_ID] varchar(255)  
    

    在Xml/Data文件夹文件夹下的xml文件中按照如下方法使用:

      <tk:Field DataType="string" IsEmpty="false">
        <tk:FieldName>PIC_FILE_NAME</tk:FieldName>
        <tk:NickName>file_name</tk:NickName>
        <tk:DisplayName>
          <tk:Content>图片</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerLine" UnitNum="1"/>
        <tk:Control Control="Upload" Order="75" DefaultShow="Detail Update"/>
          <tk:ListDetail>
          <tk:DetailDisplay>
            <tk:UploadDisplay/>
          </tk:DetailDisplay>
        </tk:ListDetail>
        <tk:Upload ServerPathField="file_path" MimeTypeField="file_type" SizeField="file_size" ContentField="file_id"  IsView="true" FileExt="jpg">
          <tk:AliyunOSSUploadProcessor/>
        </tk:Upload>
      </tk:Field>
      <tk:Field DataType="int">
        <tk:FieldName>PIC_FILE_SIZE</tk:FieldName>
        <tk:NickName>file_size</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件大小</tk:Content>
        </tk:DisplayName>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="60" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="string">
        <tk:FieldName>PIC_FILE_TYPE</tk:FieldName>
        <tk:NickName>file_type</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件类型</tk:Content>
        </tk:DisplayName>
        <tk:Length>50</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="70" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="string">
        <tk:FieldName>PIC_FILE_PATH</tk:FieldName>
        <tk:NickName>file_path</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件路径</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="80" DefaultShow="All"/>
      </tk:Field>
      <tk:Field DataType="string">
        <tk:FieldName>PIC_FILE_ID</tk:FieldName>
        <tk:NickName>file_id</tk:NickName>
        <tk:DisplayName>
          <tk:Content>导入文件内容信息</tk:Content>
        </tk:DisplayName>
        <tk:Length>255</tk:Length>
        <tk:Layout Layout="PerUnit" UnitNum="1"/>
        <tk:Control Control="Hidden" Order="80" DefaultShow="All"/>
      </tk:Field>
    

    采用AliyunOSSUploadProcessor标签

    上传阿里云的基础配置在Xml文件夹下的AliyunOSS.xml文件:

    <?xml version="1.0" encoding="utf-8"?>
    <tk:Toolkit version="1.0" xmlns:tk="http://www.qdocuments.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.qdocuments.net schema\v5\AliyunOSS.xsd">
      <tk:AliyunOSS DefaultBucketName="" TempBucketName="" UseAliyunUploadMode="true">
        <tk:Config>
          <tk:Normal AccessKeyId="" AccessKeySecret="" EndPoint="oss-cn-hangzhou.aliyuncs.com"/>
        </tk:Config>
      </tk:AliyunOSS>
    </tk:Toolkit>
    

    DefaultBucketName:上传的BucketName

    TempBucketName:上传的临时BucketName,这个需要和DefaultBucketName不一样的BucketName创建一个

    UseAliyunUploadMode:临时文件是否直接上传到阿里云,默认是false

    AccessKeyId:阿里云AccessId

    AccessKeySecret:阿里云AccessSecret

    EndPoint:阿里云EndPoint (例如:oss-cn-hangzhou.aliyuncs.com)

关于TKCore的更多信息请点击:http://www.tkcore.net

关注微信公众号获取TKCore最新资讯:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TkCore

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值