找回密码
 立即注册

QQ登录

只需一步,快速开始

flysky9981

初级会员

28

主题

132

帖子

340

积分

初级会员

积分
340
flysky9981
初级会员   /  发表于:2021-7-2 12:17  /   查看:3492  /  回复:14
1金币
根据文档中对“附件”控件的使用规则描述,附件添加后是直接上传到后台的临时文件夹里,而“附件”这个单元格的值是根据上传文件得到的“GUID_附件名”,此时把这个单元格与数据库相应字段绑定之后,就可以在数据表提交的时候把“附件”类型的单元格的值上传到数据库了。

那么请问:
在这个“GUID_附件名”保存到数据库中后,相应的实际文件是自动从临时文件夹移动到“upload”文件夹的吗?如果我在数据库里创建的字段类型不是“附件”类型,而是“文本”类型,还能正常自动进行实际文件的移动操作吗?如果不能的话,需要进行什么样的操作才能实现这个功能呢?

最佳答案

查看完整内容

大佬你把策略都验证出来了 GUID是我们为了区别文件名称单独添加的,TEMP临时文件夹也是基于我们文件的策略来搞的。 策略是这样的,首先,sqlite没有那么多字段类型,你目前看到的文本,附件,图片,都是我们在活字格内部扩展的,其实都是文本类型,只不过我们区分了,如果你设置了附件或者图片类型,快速生成页面的时候就能直接带入对应的单元格类型。 其次,什么时候会把文件放到临时文件夹呢,点击上传,上传附件的时候就 ...

14 个回复

倒序浏览
最佳答案
最佳答案
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-7-2 12:17:45
来自 5#
flysky9981 发表于 2021-7-3 12:32
我自行进行了测试,发现其实不管在数据库的表里字段是设置为“附件”,又或者是“文本”,上传功能都能正 ...

大佬你把策略都验证出来了

GUID是我们为了区别文件名称单独添加的,TEMP临时文件夹也是基于我们文件的策略来搞的。
策略是这样的,首先,sqlite没有那么多字段类型,你目前看到的文本,附件,图片,都是我们在活字格内部扩展的,其实都是文本类型,只不过我们区分了,如果你设置了附件或者图片类型,快速生成页面的时候就能直接带入对应的单元格类型。
其次,什么时候会把文件放到临时文件夹呢,点击上传,上传附件的时候就会放到临时文件夹里,
当保存数据到数据库的时候,会用数据库存储的字段值去TEMP下找,找到了移动到临时文件夹里~~

就是这么简单~

回复 使用道具 举报
Erik.Xue讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2021-7-2 18:00:31
2#
你好,我们的附件保存的其实是GUID+文件名,这样以区分文件。在发布到服务器后,上传文件后,会将上传的文件重命名为GUID_XXX,然后将文件放在对应的工程文件夹下的upload文件夹下,当使用这个文件时,底层会自动从upload文件夹下找对应的文件。
说简单点,这样做数据库中保存的就是文件名,而真正的文件并没有保存在数据库中。
回复 使用道具 举报
flysky9981
初级会员   /  发表于:2021-7-2 18:22:16
3#
Erik.Xue 发表于 2021-7-2 18:00
你好,我们的附件保存的其实是GUID+文件名,这样以区分文件。在发布到服务器后,上传文件后,会将上传的文 ...

这个我是明白的,我是想问,要想实现在保存这个文件名的时候自动移动对应文件,是不是必须把字段设置为附件类型,而不能是文本类型?
回复 使用道具 举报
flysky9981
初级会员   /  发表于:2021-7-3 12:32:46
4#
Erik.Xue 发表于 2021-7-2 18:00
你好,我们的附件保存的其实是GUID+文件名,这样以区分文件。在发布到服务器后,上传文件后,会将上传的文 ...

我自行进行了测试,发现其实不管在数据库的表里字段是设置为“附件”,又或者是“文本”,上传功能都能正常实现。哪怕是不用“附件”控件,自己手动把文件先放在“C:\ProgramData\Forguncy\%apphome%\WebSite\Upload\Temp”这个文件夹里,然后使用通过表格操作命令或者数据表命令把这个文件的文件名写入到数据库,那么相应的文件也会从“C:\ProgramData\Forguncy\%apphome%\WebSite\Upload\Temp”这个文件夹移动到它的父文件夹,也就是“C:\ProgramData\Forguncy\%apphome%\WebSite\Upload\”下。

可是,奇怪的是,如果直接把文件放到上面的临时文件夹是不行的,还需要把文件名改为“GUID_XXX”的形式,才能够自动实现文件的移动。

所以,我怀疑:这个移动操作是在将对应的文件名写入数据库的同时自动进行的,但是文件名必须是GUID_XXX的形式,活字格在所有进行数据库写操作的时候都有类似的判断逻辑。

那么,难道活字格在进行数据库写操作的时候都进行了类似的判断的吗?判断保存的文本内容是否是GUID_XXX格式的,如果是,就要进行一下文件的移动操作?又或者是有其他的底层机制呢?

望解惑。
具体的测试demo也一并附上。

demo工程文件里我先生成一个GUID,然后把这个GUID与防盗临时文件夹的文件的文件名进行拼接,获得GUID_XXX的形式,然后把临时文件夹里的文件重命名为当前获得的GUID_XXX,最后点击提交表格,进行数据库写操作。此时,附件保存的动作就完成了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1满意度 +5 收起 理由
fanhuayimeng + 5

查看全部评分

回复 使用道具 举报
flysky9981
初级会员   /  发表于:2021-7-5 18:36:24
6#
Eric.Liang 发表于 2021-7-5 18:20
大佬你把策略都验证出来了

GUID是我们为了区别文件名称单独添加的,TEMP临时文件夹也是基于我们文件的 ...

谢谢解答,
那意思就是说:
每个对数据库的crud操作(不管数据类型,或者只有文本类型)都会伴随着尝试在temp文件夹和upload文件夹下去匹配下有没有对应文件呀?哪怕就只是单纯地要crud个字符串?匹配到了就进行对应的文件操作?
很好奇
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-7-6 18:39:08
7#
flysky9981 发表于 2021-7-5 18:36
谢谢解答,
那意思就是说:
每个对数据库的crud操作(不管数据类型,或者只有文本类型)都会伴随着尝试 ...

简单理解就是上传附件的时候会把附件上传到服务器上,数据库会记录一个对应的值,当需要下载的时候,活字格会尝试在服务器上解析这个值,找到对应的附件,然后发给浏览器就好了。您问这个是想实现什么特殊的需求吗?您可以直接描述一下您的需求?我们帮您看一下能不能做到。
回复 使用道具 举报
flysky9981
初级会员   /  发表于:2021-7-6 18:46:39
8#
David.Zhong 发表于 2021-7-6 18:39
简单理解就是上传附件的时候会把附件上传到服务器上,数据库会记录一个对应的值,当需要下载的时候,活字 ...

我需要对接其他系统,对方能把文件guid发给我,同时给出一个ftp目录,账号,密码,这种情况怎么弄呢?
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-7-6 19:06:20
9#
flysky9981 发表于 2021-7-6 18:46
我需要对接其他系统,对方能把文件guid发给我,同时给出一个ftp目录,账号,密码,这种情况怎么弄呢?

您给的问题太宽泛了,您可以看看服务端命令中文件相关的命令是否能满足您的需求。您可以先尝试一下,然后具体在按遇见问题了,再重新发布一个新的帖子,具体描述一下您在哪一步遇见了什么问题。这样我们才能更好的帮助到您~
回复 使用道具 举报
flysky9981
初级会员   /  发表于:2021-7-6 19:35:25
10#
David.Zhong 发表于 2021-7-6 19:06
您给的问题太宽泛了,您可以看看服务端命令中文件相关的命令是否能满足您的需求。您可以先尝试一下,然后 ...

服务端命令里的文件相关操作命令都没有能访问ftp服务器的,可能你们没有实现类似功能的插件
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部