关于OneThink后台附件上传无法保存文件id或无法上传问题
在使用OneThink进行项目开发的时候,遇到使用内置的上传附件功能时,无法保存相应的file_id,导致上传文件成功,但是数据库中对应字段没有保存到对应的文件id。针对这个问题,我们需要进行以下几个地方的修改即可。
1、修改 /Application/Admin/Controller/FileController.class.php ,在第33行添加 :
$return[‘id’] = $info[‘download’][‘id’];//修改附件无法保存id的问题
2、修改后台对应要用到附件上传的模板文件,例如 Application/Admin/View/Article/add.html 和 Application/Admin/View/Article/edit.html
add.html文件修改:
文件 141行注释掉,然后修改为:
<input type=”hidden” name=”{$field.name}” value=”{$data[$field[‘id’]]}”/>
继续往下找,找到 js里面的 function uploadFile() 里面的
$(“input[name=”+name+”]”).val(data.data); 这句代码注释,更改为
$(“input[name=”+name+”]”).val(data.id);
如图:
edit.html同样的修改。
经过这三个文件的修改就可以上传附件的时候保存到file_id啦!
遇到提示 “没有上传的文件”或无法上传文件 问题处理:
在上传大文件的时候,往往会遇到提示 “没有上传的文件”,这是环境的设置问题,这时候需要修改php的配置文件。
- 首先查看项目的配置文件,看看有没有做了限制,onethink一般都做了上传大小的限制。打开 /Application/Admin/Conf/config.php 看有没有做限制或者限制的大小是否在允许范围。
- 查看配置文件,看文件格式是否允许。
- 经过以上两步排查之后还是无法上传的话,就要检查是不是php环境配置是否支持。打开ini文件,具体文件位置在你php程序安装目录下。修改:
post_max_size = 200M (注:数值大小自己定,这是表单提交允许的最大值)
file_uploads = On (注:这是文件上传开关,关闭后就无法上传文件)
upload_tmp_dir =c:/temp (注:这是临时上传文件目录,必须保证该目录具有读写权限)
upload_max_filesize = 200M (注:这是允许上传的最大文件大小,文件过大无法上传,一般是这个值设置过小导致)
如果上传时间过长也可能导致上传失败,你可以适当设置:max_execution_time = 60