1. 程式人生 > >thinkPHP實現物件儲存oss,將圖片上傳到阿里雲oss

thinkPHP實現物件儲存oss,將圖片上傳到阿里雲oss


演示效果和下載地址http://www.erdangjiade.com/js/1021.html
可以在阿里雲網站下載oss的demo原始碼PHP版:v2.0.5
https://help.aliyun.com/document_detail/32174.html?spm=5176.doc44688.6.375.MwiLwn
不過,阿里雲的這個demo,用的是名稱空間(名稱空間具體功能我也沒搞懂,各位自行百度,高手請路過),如要整合到thinkPHP裡面需要修改下相關檔案和名稱空間,我已經整理好了。

第一步:將oss引入到tp框架裡面,路徑為:
Thinkphp-->Library-->Org,將OSS資料夾放在org裡面。

第二步:公共配置檔案裡面
//oss配置
"OSS_ACCESS_ID" => '',
"OSS_ACCESS_KEY"=> '',
"OSS_ENDPOINT" => '',
"OSS_TEST_BUCKET" => '',
"OSS_WEB_SITE" =>'', //上面4個就不用介紹了,這個OSS_WEB_SITE是oss的bucket建立後的外網訪問地址,如需二級域名,可以指向二級域名,具體可以參考阿里雲控制檯裡面的oss

//oss檔案上傳配置
'oss_maxSize'=>1048576, //1M
'oss_exts' =>array(// 設定附件上傳型別
'image/jpg',
'image/gif',
'image/png',
'image/jpeg',
'application/octet-stream',//阿里雲好像都是通過二進位制上傳,似乎上面4個字尾設定起到什麼用?
),

第三步:公共function裡面
// 返回json
function backJson($code,$info){
$arr['status']=$code;
$arr['info']=$info;
print_r(json_encode($arr));
exit;
}

//oss上傳
/*
*$fFiles:檔案域
*$n:上傳的路徑目錄
*$ossClient
*$bucketName
*$web:oss訪問地址
*$isThumb:是否縮圖
*/
  1. function
     ossUpPic($fFiles,$n,$ossClient,$bucketName,$web,$isThumb=0){
  2.     $fType=$fFiles['type'];
  3.     $back=array(
  4. 'code'=>0,
  5. 'msg'=>'',
  6. );
  7. if(!in_array($fType, C('oss_exts'))){
  8.         $back['msg']='檔案格式不正確';
  9. return $back;
  10. exit;
  11. }
  12.     $fSize=$fFiles['size'];
  13. if($fSize>C('oss_maxSize')){
  14.         $back['msg']='檔案超過了1M'
    ;
  15. return $back;
  16. exit;
  17. }
  18.     $fname=$fFiles['name'];
  19.     $ext=substr($fname,stripos($fname,'.'));
  20.     $fup_n=$fFiles['tmp_name'];
  21.     $file_n=time().'_'.rand(100,999);
  22.     $object = $n."/".$file_n.$ext;//目標檔名 
  23. if(is_null($ossClient))exit(1);
  24.     $ossClient->uploadFile($bucketName, $object, $fup_n);
  25. if($isThumb==1
    ){
  26. // 圖片縮放,參考https://help.aliyun.com/document_detail/44688.html?spm=5176.doc32174.6.481.RScf0S  
  27.         $back['thumb']= $web.$object."?x-oss-process=image/resize,h_300,w_300";
  28. }
  29.     $back['code']=1;
  30.     $back['msg']=$web.$object;
  31. return $back;
  32. exit;
  33. }
  34. 第四步:控制器裡的操作方法裡面,例如控制器是Index
  35. publicfunction upPic(){
  36. //oss上傳 
  37.     $bucketName = C('OSS_TEST_BUCKET');
  38.     $ossClient =new \Org\OSS\OssClient(C('OSS_ACCESS_ID'), C('OSS_ACCESS_KEY'), C('OSS_ENDPOINT'),false);
  39.     $web=C('OSS_WEB_SITE');
  40. //圖片  
  41.     $fFiles=$_FILES['pic_1'];
  42.     $rs=ossUpPic($fFiles,'s',$ossClient,$bucketName,$web,0);
  43. if($rs['code']==1){
  44. //圖片  
  45.         $img = $rs['msg'];
  46. //如返回裡面有縮圖: 
  47.         $thumb=$rs['thumb'];
  48. }else{
  49.         $this->error('圖片有誤:'.$rs['msg']);
  50. return;
  51. }
  52. }
  53. 第五步:呼叫,檔案域名pic_1,要與第四步裡面的$_FILES['pic_1']一致。action地址為控制器的操作地址,例如:/index.php/Home/Index/upPic  
  54. <meta charset="UTF-8"/>
  55. <form action="/index.php/Home/Index/upPic" enctype="multipart/form-data" method="post">
  56. <input type="file" name="pic_1" value=""/>
  57. <input type="submit" value="上傳"/>
  58. </form>
複製程式碼 演示效果和下載地址http://www.erdangjiade.com/js/1021.html

相關推薦

thinkPHP實現物件儲存oss圖片阿里oss

演示效果和下載地址:http://www.erdangjiade.com/js/1021.html 可以在阿里雲網站下載oss的demo原始碼PHP版:v2.0.5 https://help.aliyun.com/document_detail/32174.html?sp

spring boot 圖片阿里oss雲端儲存

上傳阿里雲工具類: package com.example.demo.common; import java.io.*; import java.net.URL; import java.util.Date; import java.util.Random;

laravel 圖片阿里oss

表單: <div class="form-group"> <label class="col-sm-2 control-label">圖片</label> <div class="col-sm-8 media-picker"

物件儲存oss整合到thinkPHP圖片oss裡面

阿里雲的物件儲存oss,類似七牛儲存。 前幾天有客戶需要把圖片放在阿里雲的oss裡面,百度過一些資料,好像都是oss比較舊的版本1.幾的,現在上傳一個比較新的oss版本v2.0.5,並整合到think

檔案-阿里OSS-儲存檔案

JS上傳檔案到阿里雲OSS OSS支援流式寫入和讀出。特別適合視訊等大檔案的邊寫邊讀業務場景。 注意在OSS的控制檯:跨域管理中設定允許的方法 <script> var client = new OSS

元件優化】el-upload元件結合阿里OSS實現更優互動

1、效果展示 2、實現程式碼 在components目錄下,新建元件 myImgUpload.vue,程式碼如下: <template> <div> <el-upload :class="disabl

第三方外掛的引用(1) : SSM,springboot 引入ueditor及圖片阿里OS和展示

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional/

ThinkPHP框架整合Ueditor編輯器圖片阿里OSS

網上有很多介面美觀整潔的編輯器外掛,但是相比較功能而言,還是百度的ueditor更為豐富,所以我選擇了在專案中使用這款編輯器,下面介紹操作步驟,程式碼不多,自己動手,豐衣足食。 一、在專案中整合Ueditor外掛: 首先,去官網下載對應版本的壓縮包,因為用的是thinkP

在vue專案中實現註冊時改變頭像同時實現圖片的伺服器端

 一.如何實現在註冊時點選頭像時實現更改圖片的操作      1.將img和input[type="file"]放在同一個div中,利用絕對定位,讓兩者擁有相同的大小,將input的預設樣式變為透明,讓img覆蓋的input之上;img中有一個屬性,acc

canvas畫布儲存圖片avaScript圖片轉畫布用JavaScript畫布保持成圖片格式阿里

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style>

Java Springboot結合FastDFS實現檔案以及根據圖片url圖片圖片伺服器

上一篇文章我們已經講解了如何搭建FastDFS圖片伺服器,環境我們準備好了現在就讓我們開始與Java結合將他應用到實際的專案中吧。本篇文章我們將會展示上傳圖片到FastDFS圖片伺服器以及通過外網的圖片url將圖片上傳至我們自己的圖片伺服器中。 1.建立springbo

使用pluploader圖片阿里oss

 頁面引入jquery 和 plupload.full.min.js(plupload.js) // 封裝ajax 給上傳圖片用 function reqAjax(cmd, data){ var deferred = $.Deferred(); $.ajax(

前端直傳OSS物件儲存(多圖,多標籤)

程式碼下載: 1.簽名在前端完成:點選下載 2.簽名在PHP完成(推薦):點選下載 這裡主要是針對第二種直傳做修改 首先下載第二種壓縮包;,解壓 把檔案複製到專案裡,可以訪問就好 樣式自己改 首先封裝驗籤方法,用於前端ajax呼叫 <?php

終於搞定使用node.js +redis 作為服務端提供圖片儲存服務

系統不提供業務層面上的邏輯,只負責儲存和結構關係。業務相關的資料,全部通過引數化傳入。 upload.js 檔案程式碼: //自定義引數區 var basePath='e:/';//上傳的根路徑 var tempPath='c:/'; var redis_ip='127.0

使用elementUI實現圖片到本地

查閱餓了嗎官方文件可以瞭解上傳元件的使用方法。http://element.eleme.io/#/zh-CN/component/upload 前臺的頁面程式碼為: <el-upload class="upload-demo"

vue富文本編輯編輯自動預覽單個圖片不能預覽的問題解決:

pac themes indexof conf html_ sta spa load this //預覽<div class="htmlViewBox"> <p v-html="activity_html_defaultMsg" v-show="html

怎麼圖片封裝成指令?

這裡是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【怎麼將圖片上傳封裝成指令?    】 1.背景介紹 在js-tas

javaEE Springmvc檔案(圖片)

需要額外匯入檔案上傳的Jar包:commons-io和commons-fileupload的Jar包 ItemController.java(Controller後端控制器,檔案上傳(接收檔案型別的引數)): package com.xxx.springmvc.c

Linux環境下圖片提示沒有這樣的檔案或目錄解決方式

//列表縮圖 $title_file = $request->file("title_pic"); $product_file = $request->file("productpic");

java 圖片到webapp路徑下 路徑獲取方式

//此方法獲取到工程webapp資料夾下 String contexPath= request.getSession().getServletContext().getRealPath("/"); //獲取IP地址埠號以及專案名稱 <%     String pat