欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

请教app上传图片,php如何接收处理 (用的TP)

程序员文章站 2022-04-18 22:25:57
...
网上查了好多资料,
有的用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处理】。