手機app以資料流格式傳圖片php接受並儲存伺服器
今天接到一個任務需要將手機app傳過來的二進位制資料流圖片以檔案格式儲存到伺服器上,這是第一次做這種需求,就度娘一下,看見有些大神一些好了一個image類,就拿下來學習,修改一下應用到專案中。經研究學習發現這個類是可以實現需要的。特在次再做一下說明。
- <?php
- /**
- * 圖片類
- * @author [email protected]
- * @version 1.0
- *
PHP預設只識別application/x-www.form-urlencoded標準的資料型別。
因此,對型如text/xml 或者 soap 或者 application/octet-stream 之類的內容無法解析,如果用$_POST陣列來接收就會失敗!
故保留原型,交給$GLOBALS['HTTP_RAW_POST_DATA'] 來接收。在手機app傳過來時沒有涉及到瀏覽器所以此處取不到$GLOBALS['HTTP_RAW_POST_DATA'] 。要用 php://input實現。另外還有一項 php://input 也可以實現此這個功能
php://input 允許讀取 POST 的原始資料。和 $HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小,並且不需要任何特殊的 php.ini 設定。php://input和 $HTTP_RAW_POST_DATA 不能用於 enctype="multipart/form-data"。
- */
- class image {
- const ROOT_PATH = './';
- const FAIL_WRITE_DATA = 'Fail to write data';
- //沒有資料流
- const
- //圖片型別不正確
- const NOT_CORRECT_TYPE = 'Not a correct image type';
- //不能建立檔案
- const CAN_NOT_CREATE_FILE = 'Can not create file';
- //上傳圖片名稱
- public $image_name;
- //圖片儲存名稱 此處名稱需要含有後綴名才可實現圖片儲存功能,否則不是圖片。
- public $save_name;
- //圖片儲存路徑
- public
- //目錄+圖片完整路徑
- public $save_fullpath;
- /**
- * 建構函式
- * @param String $save_name 儲存圖片名稱
- * @param String $save_dir 儲存路徑名稱
- */
- public function __construct($save_name, $save_dir) {
- //set_error_handler ( $this->error_handler () );
- //設定儲存圖片名稱,若未設定,則隨機產生一個唯一檔名
- $this->save_name = $save_name ? $save_name : md5 ( mt_rand (), uniqid () );
- //設定儲存圖片路徑,若未設定,則使用年/月/日格式進行目錄儲存
- $this->save_dir = $save_dir ? self::ROOT_PATH .$save_dir : self::ROOT_PATH .date ( 'Y/m/d' );
- //建立資料夾
- @$this->create_dir ( $this->save_dir );
- //設定目錄+圖片完整路徑
- $this->save_fullpath = $this->save_dir . '/' . $this->save_name;
- }
- //相容PHP4
- public function image($save_name) {
- $this->__construct ( $save_name );
- }
- public function stream2Image() {
- //二進位制資料流
- $data = file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RAW_POST_DATA'] );
- //資料流不為空,則進行儲存操作
- if (! emptyempty ( $data )) {
- //建立並寫入資料流,然後儲存檔案
- if (@$fp = fopen ( $this->save_fullpath, 'w+' )) {
- fwrite ( $fp, $data );
- fclose ( $fp );
- $baseurl = "http://" . $_SERVER ["SERVER_NAME"] . ":" . $_SERVER ["SERVER_PORT"] . dirname ( $_SERVER ["SCRIPT_NAME"] ) . '/' . $this->save_name;
- if ( $this->getimageInfo ( $baseurl )) {
- echo $baseurl;
- } else {
- echo ( self::NOT_CORRECT_TYPE );
- }
- } else {
- }
- } else {
- //沒有接收到資料流
- echo ( self::NO_STREAM_DATA );
- }
- }
- /**
- * 建立資料夾
- * @param String $dirName 資料夾路徑名
- */
- public function create_dir($dirName, $recursive = 1,$mode=0777) {
- ! is_dir ( $dirName ) && mkdir ( $dirName,$mode,$recursive );
- }
- /**
- * 獲取圖片資訊,返回圖片的寬、高、型別、大小、圖片mine型別
- * @param String $imageName 圖片名稱
- */
- public function getimageInfo($imageName = '') {
- $imageInfo = getimagesize ( $imageName );
- if ($imageInfo !== false) {
- $imageType = strtolower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );
- $imageSize = filesize ( $imageInfo );
- return $info = array ('width' => $imageInfo [0], 'height' => $imageInfo [1], 'type' => $imageType, 'size' => $imageSize, 'mine' => $imageInfo ['mine'] );
- } else {
- //不是合法的圖片
- return false;
- }
- }
- /*private function error_handler($a, $b) {
- echo $a, $b;
- }*/
- }
相關推薦
手機app以資料流格式傳圖片php接受並儲存伺服器
今天接到一個任務需要將手機app傳過來的二進位制資料流圖片以檔案格式儲存到伺服器上,這是第一次做這種需求,就度娘一下,看見有些大神一些好了一個image類,就拿下來學習,修改一下應用到專案中。經研究學習發現這個類是可以實現需要的。特在次再做一下說明。 <?php
c#文件流上傳圖片
bsp message [] urn pub each bstr attach 異常 1、第一步 定義參數 //主表TableA public class TableA { public List<TableB> AccidentImgByte { get; s
Fiddler抓取手機APP程式資料包--過濾多餘的Sessions
1.下載並安裝Fiddler 下載地址:https://www.telerik.com/download/fiddler 2.設定Fiddler可監聽遠端通訊 前提條件:需要監聽的手機和Fiddler所在的電腦必須在同一個區域網下。 ①點選Tools ——>
蘋果手機(ios)拍照上傳圖片旋轉90度問題---java後臺處理
需要先匯入包 metadata-extractor-2.3.1.jar 地址 https://github.com/drewnoakes/metadata-extractor/releases?after=2.7.0 xmpcore-5.1.2.jar 依賴包 maven下載 med
百度ueditor後端配置錯誤,未找到上傳資料,上傳圖片的完整步驟以及難點問題!
本人因需要編輯功能,自己鑽研加網上找文件,終於弄出了上傳功能。 1 先說原理,不用在後臺建立Action或者controller去接收ueditor上傳的檔案,你只需要設定上傳的路徑,他會自動給你上傳到該目錄下面,非常強大,並且是否帶上Html頭和尾自 需
如何進行手機APP的資料爬取?
轉載地址:https://segmentfault.com/a/1190000013439547 平時我們的爬蟲多是針對網頁的,但是隨著手機端APP應用數量的增多,相應的爬取需求也就越來越多,因此手機端APP的資料爬取對於一名爬蟲工程師來說是一項必備的技能。我們知道,網頁爬取的時候我經常使用F1
手機網頁版JS壓縮上傳圖片--base64位 相容IOS和安卓
首先,我用到了一款外掛,是純JS壓縮上傳外掛,第一次用CSDN,不太會用,我把外掛所有程式碼拷貝在文章末尾。 載入JS外掛<script src="__JS__/dist/lrz.mobile.min.js"></script>
MUI框架開發HTML5手機APP(二)--頁面跳轉傳值&底部選項卡切換
概 述 JRedu 在上一篇部落格中,我們學習瞭如何使用Hbuilder建立一個APP,同時如何使用MUI搭建屬於自己的第一款APP,沒有學習的同學可以戳連結學習: http://www.cnblogs.com/jerehedu/p/7832808.html 今天這篇部落格,我們繼續深入學習
php實現curl請求以post方式上傳圖片檔案
在呼叫第三方api介面時,有時會遇到通過http協議上傳圖片,以下是一個微信公眾平臺新增永久素材的例子;php程式碼: /* 使用curl函式 */ $url = "https://api.weixin.qq.com/cgi-bin/material/add_m
android中以檔案形式上傳圖片到後臺
private File tuPian1 ; private File tuPian2 ; @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
angular+ionic 選擇手機相簿,呼叫相機,上傳圖片
1.安裝外掛 cordova-plugin-image-picker;cordova-plugin-camera;cordova-plugin-file;2.注入 $cordovaImagePicker;3.相簿選擇函式function sheetImg() {var opt
CKEditor 4.10.1 上傳圖片提示“不正確的伺服器響應” 問題解決
最近專案採用CKEditor 4 富文字編輯器,上傳圖片時提示"不正確的伺服器響應" , 檢視官方文件要求返回json格式,官方示例: Response: File Uploaded Successfully 上傳成功返回: { "uploaded
java 上傳圖片至本地 並讀取圖片在網頁中顯示
java 上傳圖片至本地 並讀取圖片在網頁中顯示 程式碼+圖片如下所示 一、程式碼 @Controller public class ImageController { private static Logger logger = LoggerFactory.getLogge
在後臺轉換base64格式的圖片,讓資料庫存貯伺服器端圖片。
public String parseContents(String contents) { String newContents=new String(); while (contents.indexOf("data:imag
JAVA 上傳圖片至阿里OSS儲存庫
1.建立一個工具類OSSUtil.java,程式碼如下: package com.qyrj.util; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.PutObjectRequest; import java.io.By
Android H5拍照或選擇上傳圖片+WebApi服務端儲存檔案
H5拍照+H5選照片 <em id="clock_imgs"></em><a href="javascript:captureImage();">選擇圖片</a> <button type="button" id="submit" >
layui 上傳圖片回顯並點選放大實現
1、頁面程式碼佈局 <div class="layui-col-xs12 form-group"> <div class="layui-col-xs6"> <div class="
如何使用.md檔案和如何上傳圖片到github並在README.MD檔案中顯示
.md檔案是markdown的縮寫,Markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的HTML頁面。現在來說說如何編寫.md檔案 #語法解說 1.標題 1.1(用#號的數量來顯示大小)如:
Android端上傳圖片到後臺,儲存到資料庫中
首先點選頭像彈出popwindow,點選相簿,相機,呼叫手機自帶的裁剪功能,然後非同步任務類訪問伺服器,上傳頭像,儲存到資料庫中, 下面寫出popwindow的程式碼 //設定popwindow public PopupWindow getPopWindow
tp5中上傳圖片方法,並生成相應縮圖的方法
//接收上傳檔案的name$file = $this->_req->file("upload_head_image");//將上傳的檔案移動到public/uploads/user$info = $file->validate(['size'=>524