网上查了好多资料,
有的用base64
有的用 $_files;
($_post;
file_get_contents('php://input')
有没有可以模拟出来一个客户端上传, 然后 php后端处理完成的例子?
不是很明白原理,谢谢
回复讨论(解决方案) 用tp本身自带的上传类,不行吗?改成接口
class useraction extends action{ //添加 public function add(){ // var_dump(uniqid().(time().rand(0,100))); // die(); import('org.net.uploadfile'); $upload = new uploadfile();// 实例化上传类 $upload->maxsize = 3145728 ;// 设置附件上传大小 $upload->allowexts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 //$upload->saverule = uniqid;//这个是改变图片名称的,可同时改变多张图片的名称,实现图片的不同名 这样也就不会出现覆盖的现象了 $upload->saverule='mytime'; $upload->savepath = './public/uploads/';// 设置附件上传目录 if(!$upload->upload()) {// 上传错误提示错误信息 $this->error($upload->geterrormsg()); }else{// 上传成功 获取上传文件信息 $info = $upload->getuploadfileinfo(); } $user = m('user'); $user->create(); // 创建数据对象 $user->user_pic = http://.$this->_server('http_host').'/public/uploads/'.$info[0]['savename']; // 保存上传的照片根据需要自行组装 $user->user_idcard = http://.$this->_server('http_host').'/public/uploads/'.$info[1]['savename']; $user->user_card = http://.$this->_server('http_host').'/public/uploads/'.$info[2]['savename']; //$user->piclink = http://.$this->_server('http_host').'/public/uploads/'.$info[0]['savename']; // //$user->time = date('y-m-d h:i:s',time()); $user->add(); // echo $flash->getlastsql(); // die(); $this->success(数据保存成功!); }
如何测试,必须用客户端来提交吗?好模拟出数据来不?谢谢
我们的app上传图片使用http上传的,我测试时,用的form表单,设置form属性为enctype=multipart/form-data
后台获取用$_files就可以获取了
怎么看 app前端上传图片用的什么格式啊? 请教 那就得问开发app的人怎么上传图片的,一般都是http 表单上传,也就是说,你用form表单的就能模拟app上传了
当然,你也可以,打印出$_files里面的数据,若有,就表示获取到了app上传的图片,没有就失败了呗
app上传,php这边接收不用改的,与网页上传一样。
app那边使用 content-disposition: form-data; 这种方式上传就可以了。
参考: http://blog.csdn.net/fdipzone/article/details/12180523
根据app的上传方式来决定php端的获取方式,多数都是表单式上传。
$_files; file_get_contents('php://input')都可以。。
还有的是先在客户端读取了文件内容,再base64编码,再上传。
比较简单的大文件断点上传,其实就可以这种【主要靠app处理】。
