詳解PHP使用OSS上傳文件_第1頁
詳解PHP使用OSS上傳文件_第2頁
詳解PHP使用OSS上傳文件_第3頁
詳解PHP使用OSS上傳文件_第4頁
詳解PHP使用OSS上傳文件_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第詳解PHP使用OSS上傳文件目錄一、安裝阿里云osssdk二、使用1、獲取OSSAccessKeyId、AccessKeySecret2、簡(jiǎn)易上傳Html處理3、控制器處理OssImageController.php4、service層處理OssImageService.php5、oss實(shí)例及參數(shù)獲取封裝AliOss.php6、結(jié)果是可以上傳成功三、問題說明

一、安裝阿里云osssdk

在網(wǎng)站根目錄執(zhí)行下面命令,安裝osssdk。

composerrequirealiyuncs/oss-sdk-php

安裝后,會(huì)在網(wǎng)站根目錄/vendor下找到一個(gè)名為`aliyuncs`的文件夾。

注:[阿里云oss-sdk文檔(可不用關(guān)注)](/document_detail/32099.html"官方oss-sdk文檔")

二、使用

1、獲取OSSAccessKeyId、AccessKeySecret

如果沒有這兩個(gè)數(shù)據(jù)可以參考/m_nanle_xiaobudiu/article/details/101756805。

2、簡(jiǎn)易上傳Html處理

upload.html

!DOCTYPEhtml

htmllang="en"

head

metacharset="UTF-8"

title小卜丟個(gè)人站-oss圖片上傳/title

/head

body

formaction="oss-image/upload-image.json"method="post"enctype="multipart/form-data"

labelfor="file"文件名:/label

inputtype="file"name="image"id="file"br

inputtype="submit"name="submit"value="提交"

/form

/body

/html

3、控制器處理OssImageController.php

直接將請(qǐng)求發(fā)送到service,不用關(guān)注此層

declare(strict_types=1);

namespaceapp\controllers;

useapp\services\OssImageService;

classOssImageControllerextendsBaseController

*oss上傳圖片

*@returnstring

*@throws\OSS\Core\OssException

publicfunctionactionUploadImage()

return$this-response(OssImageService::service()-uploadImage());

}

4、service層處理OssImageService.php

PHP處理在此層,關(guān)注此層即可

declare(strict_types=1);

namespaceapp\services;

useapp\extensions\AliOss;

classOssImageServiceextendsBaseService

*oss上傳圖片

*@returnarray

*@throws\OSS\Core\OssException

publicfunctionuploadImage()

$ossClient=AliOss::getOssClient();

$bucketName=AliOss::getBucketName();

//文件名

$fileName=$_FILES['image']['name'];

//臨時(shí)文件位置

$tmpFile=$_FILES['image']['tmp_name'];

//定義文件存儲(chǔ)的oss位置

$ossPath='test/'.date('Y-m-d').'/'.date('Hi').mt_rand(10000,99999);

//定義ossobject

$object=$ossPath.'.'.$this-getExtension($fileName);

//執(zhí)行上傳并獲取返回oss信息

$info=$ossClient-uploadFile($bucketName,$object,$tmpFile);

$ossUrl=$info['oss-request-url'];

//如果圖片的協(xié)議是http,則轉(zhuǎn)換成https

if(substr($ossUrl,0,4)=='http'){

$ossUrl=substr_replace($ossUrl,'https',0,4);

$data=[

'file_url'=$ossUrl,

'file_name'=basename($ossUrl)

return$data;

*返回文件擴(kuò)展名

*@param$fileName

*@returnmixed

privatefunctiongetExtension($fileName)

returnpathinfo($fileName)['extension'];

}

5、oss實(shí)例及參數(shù)獲取封裝AliOss.php

declare(strict_types=1);

namespaceapp\extensions;

useOSS\OssClient;

useOSS\Core\OssException;

*阿里云oss文件上傳

classAliOss

constendpoint='';

constaccessKeyId='LSDFskkdDDSSdkfg';

constaccessKeySecret='LT9cG3JkGKffRPalgk4n33lk8Ll41d';

constbucket='hk-server';

*根據(jù)Config配置,得到一個(gè)OssClient實(shí)例

*@returnOssClient一個(gè)OssClient實(shí)例

publicstaticfunctiongetOssClient()

try{

$ossClient=newOssClient(self::accessKeyId,self::accessKeySecret,self::endpoint,false);

}catch(OssException$e){

printf(__FUNCTION__."creatingOssClientinstance:FAILED\n");

printf($e-getMessage()."\n");

returnnull;

return$ossClient;

publicstaticfunctiongetBucketName()

returnself::bucket;

}

6、結(jié)果是可以上傳成功

返回圖片在oss中的完整訪問url的

status:1,

msg:"success",

data:{

file_url:"/test/2025-08-22/211753008.jpg",

file_name:"211753008.jpg"

}

這時(shí),我們?cè)L問/test/2025-08-22/211753008.jpg就可以正常獲取到圖片了,并且在oss管理控制臺(tái)也是可以找到上傳的文件的。

這只是將文件上傳到oss上,并將文件的url返給前端,但還沒有將文件的信息存在本地。這里建議前端接收到該url后,連同文件的其他數(shù)據(jù)(比如分類、文件名

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論