백엔드 개발 PHP7 Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성

Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성

May 20, 2020 am 11:27 AM
1

이 사례는 Laravel5.6 + Alibaba Cloud OSS를 사용하여 이미지 업로드 기능을 완성하며, 다음 단계에 따라 완료할 수 있습니다.

환경을 배포하기 전에 개인 계정 또는 회사 계정 중 하나를 Alibaba Cloud 플랫폼에 등록해야 합니다. 등록이 완료된 후 프로젝트의 access_key 및 access_secret 구성을 복사하여 기본 설정을 완료합니다. 프로젝트의.

1. 새 프로젝트를 생성하고 Laravel 5.6 버전의 프레임워크 코드를 설치합니다.

1. 환경 구성 요구 사항

Laravel은 시스템에 대한 몇 가지 요구 사항을 충족합니다.

PHP > ;= 7.1.3

OpenSSL PHP

PHP PDO 확장

PHP Mbstring 확장

PHP Tokenizer 확장

PHP XML 확장

PHP Ctype 확장

PHP JSON 확장

참고: 위 구성을 충족해야 합니다. 요구 사항에 대해 자세히 설명하지는 않지만 PHP 구문을 살펴보세요

2. Laravel5.6 프레임워크 설치

Laravel5.6은 Composer를 사용하여 프로젝트 종속성을 관리합니다. 따라서 Laravel5.6을 사용하기 전에 Composer가 컴퓨터에 설치되어 있는지 확인하십시오.

composer -v
로그인 후 복사

Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성

참고: Composer의 구체적인 설치는 위의 링크를 참고하시고, 문서에 따라 설치해 주시기 바랍니다. 다음으로 Larvael5.6 프레임워크를 구체적으로 설치해 드리고, 컨트롤 창에 해당 내용을 입력해 주세요. Windows 운영 체제) 설치가 완료될 때까지 기다립니다.

composer create-project --prefer-dist laravel/laravel blog
로그인 후 복사

설치가 완료된 후 다음 코드를 실행하여 애플리케이션에 대한 임의의 문자열 키를 설정하세요.

php artisan key:generate
로그인 후 복사

브라우저에 http://localhost/blog/public/index.php를 입력하시면 아래와 같은 인터페이스가 보이시면 정상적으로 접속이 된 것입니다.

Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성

3.composer.json에서 Alibaba Cloud 구성 요소 패키지를 구성합니다.

require에 "jacobcyl/ali-oss-storage": "^2.1"

"require": {
      "php": "^7.1.3",
      "fideloper/proxy": "^4.0",
      "laravel/framework": "5.8.*",
      "laravel/tinker": "^1.0",
      "jacobcyl/ali-oss-storage": "^2.1"
   },
로그인 후 복사

를 추가하고

composer update
composer dumpautoload
로그인 후 복사

명령을 실행합니다. Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성

구성요소가 다운로드되면 아래와 같습니다.

Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성

4. Alibaba Cloud access_key 및 access_secret 구성(OSS 자체 활성화)

이것은 매우 중요합니다. 구성

1단계: 추가: config/app.php의 공급자 아래에

Jacobcyl\AliOSS\AliOssServiceProvider::class,
로그인 후 복사

2단계: app/filesystems.php의 디스크 아래에

'oss' => [
    'driver' => 'oss',
    'access_id' => env('OSS_ACCESS_ID', '填你自己的'),
    'access_key' => env('OSS_ACCESS_KEY', '填你自己的'),
    'bucket' => env('OSS_BUCKET', '填你自己的'),
    'endpoint' => env('OSS_ENDPOINT', 'oss-cn-hangzhou.aliyuncs.com'),
    'isCName' => false,
    'debug' => true,
],
로그인 후 복사

를 추가합니다. 3단계: 여기에 새 파일 alioss.php 파일

<?php
return [
    &#39;OSS_ACCESS_ID&#39; => env(&#39;OSS_ACCESS_ID&#39;, &#39;填你自己的&#39;),
    &#39;OSS_ACCESS_KEY&#39;=> env(&#39;OSS_ACCESS_KEY&#39;, &#39;填你自己的&#39;),
    &#39;OSS_ENDPOINT&#39; => env(&#39;OSS_ENDPOINT&#39;, &#39;oss-cn-hangzhou.aliyuncs.com&#39;),
    &#39;OSS_BUCKET&#39; => env(&#39;OSS_BUCKET&#39;, &#39;填你自己的&#39;),
    &#39;OSS_HOST&#39; => &#39;https://填你自己的.oss-cn-hangzhou.aliyuncs.com&#39;,//前台显示域名
    &#39;OSS_URL&#39; => &#39;https://填你自己的.oss-cn-hangzhou.aliyuncs.com&#39;, // CDN域名,没有CDN就和OSS_HOST一致即可
];
로그인 후 복사

을 만듭니다. 파일이 로드되었습니다.

2. 인터페이스 컨트롤러 메서드 작성

새 컨트롤러 만들기: UploadsController는 쉬운 작업을 위해 Controller 클래스를 상속합니다.

1단계: API 라우팅 작성

Route::post(&#39;/index/image&#39;, &#39;\App\Http\Controllers\Index\UploadsController@index&#39;);
로그인 후 복사


2단계: 컨트롤러 작성, 사진 업로드(핵심 코드)

public function index(Request $request) {
      $disk = \Storage::disk(&#39;oss&#39;);
      if (!isset($request->image)) {
      return $this->array_format(&#39;图片信息错误&#39; . __LINE__, 414);
      }
      switch ($request->source) {
      case &#39;file&#39;:
      if (!($request->hasFile(&#39;image&#39;) && $request->file(&#39;image&#39;)->isValid())) {
      return $this->array_format(&#39;图片信息错误&#39; . __LINE__, 414);
      }
            $file = $request->file(&#39;image&#39;);
            $image_str = @file_get_contents($file->getPathname());
            $base64_str = base64_encode($image_str);
            break;
        case &#39;url&#39;:
          $image_str = @file_get_contents($request->image);
          $base64_str = base64_encode($image_str);
          break;
        case &#39;base64&#39;:
          $base64_str = $request->image;
          break;
        default:
          return $this->array_format(&#39;图片类型错误&#39;, 414);
          break;
      }
      //获取图片信息
      $image_info = $this->base64_image_format($base64_str);
      if (!$image_info) {
      return $this->array_format(&#39;图片信息错误&#39; . __LINE__, 414);
      }
      if ($image_info[&#39;image_size&#39;] > 10 * 1024 * 1024) {
      return $this->array_format(&#39;图片信息太大&#39;, 414);
      }
      $image_path = &#39;uploads/image/&#39;. date(&#39;Ym&#39;);
      $image_name = $image_path . &#39;/&#39; . md5($image_info[&#39;image_str&#39;]) . &#39;.&#39; . $image_info[&#39;image_suffix&#39;];
      //上传图片
      $temp = $disk->put($image_name, $image_info[&#39;image_str&#39;]);
      if (!$temp) {
      return $this->array_format(&#39;上传失败&#39;, 414);
      }
      return $this->array_format(&#39;上传成功&#39;, 200, [
          &#39;image_name&#39; => $image_name,
          &#39;image_url&#39; => $disk->url($image_name),
      ]);
}
로그인 후 복사

4. Postman 도구 인터페이스 테스트

Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성

공개 계정(Laravel 기술 커뮤니티 ) "Alibaba Cloud OSS"라고 답장하고 케이스 소스 코드를 다운로드하세요.

위 내용은 Laravel + Alibaba Cloud OSS로 이미지와 텍스트 분리 아키텍처 완성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)