網上查了好多資料,
有的用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處理】。