php 方法里边调方法,thinkphp中一个方法调用另一个方法的变量

//实例化上传类 public function upload() { $upload = new Upload(); $upload->maxSize = 10 * 1024 * 1024; $upload->exts = array('jpg', 'jpeg', 'gif', 'txt','zip'); $upload->savePath = './'; $upload->hash = false; $info = $upload->upload(); if (!$info) { $this->error($upload->getError()); } else{ foreach ($info as $file) { $uploadFile=$file['savepath'].$file['savename']; echo $uploadFile; } } } //添加文章 public function addArticle(){ $sort = $_POST['sort']; $title = $_POST['title']; $intro = $_POST['intro']; $pic = $_POST['pic']; $content = $_POST['content']; $articleSort= D('Article')->addArticle($sort,$title,$intro,$pic,$content); $this->display('Index/AddArticle'); }

在做一个添加文章的功能。添加文章时用户可以先ajax无刷新上传文件,然后编辑文章后点发表文章按钮。有点类似QQ邮箱那种。

代码里 upload() 是上传文件的方法,addArticle()是添加文章的方法。

用户在上传文件时就会执行upload()方法把文件上传到指定的目录。我想用户在点击发布文章按钮时在addArticle()方法里获取upload()的变量$uploadFile,即用户上传文件的目录,然后和文章内容一起存储在数据库中。

简单来说我在addArticle()方法里要用到upload() 方法里的变量$uploadFile

求助各位大神

回复讨论(解决方案)

定义类属性。

由 添加文章时用户可以先ajax无刷新上传文件 可知

你的 upload 和 addArticle 是分开执行的

那么你就得在服务器上缓存 upload 的结果,在执行 addArticle 时取回

缓存这方法不错

由 添加文章时用户可以先ajax无刷新上传文件 可知

你的 upload 和 addArticle 是分开执行的

那么你就得在服务器上缓存 upload 的结果,在执行 addArticle 时取回

用session缓存结果好么,还是用其他方法

用 session 是可以的,缓存的只不过是文件名而已

也可以在 ajax 上传后,将回传的文件名写入表单控件,之后再和表单一起提交

在你的这个架构中,需要考虑到一个问题:操作夭折时的垃圾回收(上传图片后又放弃提交了,此时上传的文件就成了孤儿)

给个方案供你参考:

上传的文件不直接放到上传目录中而是先放到一临时目录中,待表单正式提交后再从临时目录 rename 到上传目录

这样只需定时清空临时目录就可以了

xuzuning版主说的非常好,我没考虑到的操作夭折也给参考方案。现在问题解决了,谢谢大神!!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值