php curlfile没找到,通过curl组件远程上传附件,代码报错找不到临时文件

本帖最后由 mrh111 于 2013-06-16 18:36:06 编辑

yii curl 文件上传 求大牛解决,系统用的是yii框架搭建的。找了好久都没找到原因,新增可以,编辑的时候添加新的图片就是不成功

我想说明的是 在后台新加一条记录,图片上传功能是完全可用的,就是在编辑相关信息的时候想上传新的图片就上传不成功。

程序执行轨迹代码片段:

if ($waitSave) {$files = array();foreach ($waitSave as $r)$files[] = $r['url'];// 将文件移动到正式目录下...$rs = Attachment::connect(Yii::app()->params['key'], Yii::app()->params['secret'])->move($files); //$files 参数是一个图片绝对临时路径 的数组

static public function move($files = '') {if (!$files && !self::$files)return ;if (self::$files)$files = self::$files;$filesData['files'] = serialize($files);$post = self::getPostData($filesData);$rs = self::$curlInstance->send_post_data(self::ATTACHMENT_URL . self::API_FILENAME . 'move',$post);return self::resultToObject($rs);}

function send_post_data($url, $postdata, $ip=null, $timeout=10) { curl_setopt($this->ch, CURLOPT_URL, $url); curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true); if ($ip) { if ($this->debug) { echo "Binding to ip $ip\n"; } curl_setopt($this->ch, CURLOPT_INTERFACE, $ip); } curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($this->ch, CURLOPT_POST, true); $post_array = array(); if (is_array($postdata)) { foreach ($postdata as $key => $value) { $post_array[] = urlencode($key) . "=" . urlencode($value); } $post_string = implode("&", $post_array); if ($this->debug) { echo "Url: $url\nPost String: $post_string\n"; } } else { $post_string = $postdata; } curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post_string); $result = curl_exec($this->ch); if (curl_errno($this->ch)) { if ($this->debug) { echo "Error Occured in Curl\n"; echo "Error number: " . curl_errno($this->ch) . "\n"; echo "Error message: " . curl_error($this->ch) . "\n"; } return false; } else { return $result; } }

下面是远程服务器上的代码

api.php

elseif ($action == 'move') { // 请求移动文件$files = (isset($_POST['files'])) ? unserialize(str_stripslashes($_POST['files'])) : '';if (is_array($files)) {foreach ($files as $k => $v)$files[$k] = str_ireplace(AM_URL, '', $v);}else {$files = str_ireplace(AM_URL, '', $files);}$rs = $s->move($files, BASE_UPLOAD_DIR . date('Ym/d') . '/');

static public function move($file, $newfile) {return File::move($file, $newfile);}

File类里面的move方法

static public function move($file = '', $filePath = '') {if (!$file or !$filePath)throw new ParametersException('未获取到请求移动的文件或者文件目标位置');// 判断路径是否"/"结尾$filePath = self::path($filePath);// 判断文件是否存在if (is_array($file)) {foreach ($file as $f) {if (!file_exists($f))throw new FileNotFoundException('源文件数组中包含不存在的文件');}// 构造目标位置的绝对路径foreach ($file as $key => $f) {$fileBaseName = basename($f);$newfiles[$key] = $filePath . $fileBaseName;}}

if (!file_exists($f)) 这里就找不到临时文件了,但是实际上临时文件夹是有对应图片文件存在的。

回复讨论(解决方案)

把一个及其简单的事情,弄得那么复杂?

把一个及其简单的事情,弄得那么复杂?

我以为这样能让人更明白

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值