[gogf/gf]提几个需求

2024-06-25 949 views
6
  1. 数据库字段定义为JSON类型时,其实是longtext,此时能否支持具体类型入库时自动转和取出时自动转?举一个常见的应用场景:商品的头图,或者博客文章的头图,一般是3到8张图片,上传完后也不会以头图检索,所以前端通常通常会将这几张头图封装成一个数组,后端会将这个数组直接存入数据库的一个字段,然而在某些情况下,要动态加水印,或者鉴黄、鉴政、鉴权,所以又需要自己手动处理一遍,当系统中这样的功能和接口比较多的时候,好多地方都要自己写,不是很方便。另外,查询一条记录返回给客户端的时候,这个字段是个字符串,客户端还不能直接使用,要再转码成为JSON对象才能在前端表单上回显,也不太方便。

  2. 文件上传功能需要增强:

    1. 通常文件上传之后,在服务器上不会以原文件名存储,会转码成为无意义的名称(类似于UUID吧),这样可以规避一些安全问题
    2. 文件上传需要进行校验,比如验证后缀,比如验证文件大小
    3. 参考其他语言和框架,文件上传调files.Save('my_path')之后,不能仅得到文件名,一般还会有转码文件名,甚至MD5和Hash(TP框架有这个功能)

尊请大神讨论是否可行。。。

回答

8

刚想到:上传的文件名如果不转码,会有一个新的问题:比如上传的文件都放在了uploads目录下,这种情况下,a用户上传了一个1.jpg,随后b用户也上传了一个1.jpg,就会出现a.jpg被覆盖,此时a用户在系统中的表单回显时,显示的1.jpg不是自己的而是b的。这问题就大了,这种情况如果交给程序代码逻辑去控制,会很麻烦。

9

@ccpwcn 你的第一个问题是期望对数据表JSON字段自动Encoding/Decoding对吗?第二个的文件编码问题我改进一下,不过另外你也可以考虑第二个随机重命名参数。

9

对于数据库中JSON类型的字段的数据如果能自动Encoding/Decoding是最好的了,但是上传文件的验证是个更急迫的需求,靠前端验证是不可靠的,文件上传到后端必须是后端对类型、大小、后缀进行验证。ThinkPHP6的文件上传验证机制做的还是不错的,可以借鉴一下(虽然它现在还有bug,但是不影响我们学习它)。

8

对于文件上传验证,ThinkPHP6最主要的验证,也是最常见需求,就是文件大小、文件后缀这两项,但是它有一个更牛X的,就是可以自动获得图片文件的宽和高(文本文件能不能获得行数我没试过),这个也不错,比如我上传头像的图片,我要求:只能是jpg/jpeg/png,文件大小不超过200K,宽和高不大于300px,也挺不错的。

6

宽度和高度可以放在前端校验吧!

2

@ccpwcn 你这里提到两个功能:

  1. 数据字段JSON类型增强支持,包括自动编解码。这个可以考虑。
  2. 上传文件,特别是图形文件的校验功能。大小校验你可以通过UploadFile*方法获取到文件之后根据其大小自行进行校验。如果是图片宽和高校验会比较麻烦,涉及到引入图形库,目前gf框架为保证轻量级没有引入太重的图形库,这块你可以自行考虑。