上传控件
上传控件是将本地文件上传到服务器。在服务端,对上传的文件通常会直接放在服务器的硬盘上,或者存入数据库中。现在由于云OSS服务器的兴起,当然也可以将上传的文件放入OSS服务器上。
Toolkit采用配置插件的方式来对上传到服务器的文件进行处理。当前系统内置了三种插件:一以二进制的方式存储到数据库中,二是文件形式存储在服务器上,三是文件形式上传到本地服务器上。当然,根据需要还可以开发出更多的插件,比如存储到七牛云,或者采用数据库和文件两种混合方式存储。
根据Toolkit的数据库定义规范,上传控件需要在数据表中定义的基础字段:
- FILE_NAME:文件名,数据库字段建议类型:varchar(255)
- SIZE:文件大小,数据库字段建议类型:int
- CONTENT_TYPE:MIME类型,数据库字段建议类型:varchar(100)
- FILE_PATH:文件路径(上传阿里云时为Url地址),数据库字段建议类型:varchar(255)
- 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最新资讯: