Alibaba Cloud oss を yii2.0 と統合して単一のファイルをアップロードする方法
この記事では主に、Alibaba Cloud oss を統合して 1 つのファイルをアップロードする Yii2.0 の例を紹介します。編集者はそれが非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう
前回の記事では、Alibaba Cloud oss の統合方法を紹介しましたが、この記事では主に Alibaba Cloud oss へのファイルのアップロードについて紹介します。
主なアイデア: まず、ファイルをサーバーにアップロードする必要があります。次に、サーバー内のファイルを Alibaba Cloud oss に転送する必要があります。失敗した場合は、ファイル情報がデータベースに書き込まれます。サーバーファイルが削除されます。
主な手順:
0 いくつかの oss の概念を紹介します。
accessKeyId ==> 保存されたルート ディレクトリ
endPoint ==>> これをスペースと ossfile の間に配置して、ファイルにアクセスするための URL パスを形成します。これは、Alibaba Cloud の画像を取得する方法でもあります。
object ==>> ファイルが Alibaba Cloud oss に転送された後のパスと名前は何ですか?
スクリーンショットを見ると理解しやすいです:<?php use yii\widgets\ActiveForm; ?> <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?> <?= $form->field($model, 'files')->fileInput() ?> <button>Submit</button> <?php ActiveForm::end() ?>
public function actionTestAliyun() { $model = new UploadForm(); // 实例化上传类 if (Yii::$app->request->isPost) { $model->files = UploadedFile::getInstance($model,'files'); //使用UploadedFile的getInstance方法接收单个文件 $model->setScenario('upload'); // 设置upload场景 $res = $model->uploadfile(); //调用model里边的upload方法执行上传 $err = $model->getErrors(); //获取错误信息 echo "<pre class="brush:php;toolbar:false">"; print_r($res); //打印上传结果 print_r($err); //打印错误信息,方便排错 exit; } return $this->render('aliyunoss',['model'=>$model]); }
<?php /** * Created by PhpStorm. * Description: 阿里oss上传图片 * Author: Weini * Date: 2016/11/17 0017 * Time: 上午 11:34 */ namespace app\models; use Yii; use yii\base\Exception; use yii\base\Model; class UploadForm extends Model { public $files; //用来保存文件 public function scenarios() { return [ 'upload' => ['files'], // 添加上传场景 ]; } public function rules(){ return [ [['files'],'file', 'skipOnEmpty' => false, 'extensions' => 'jpg, png, gif', 'mimeTypes'=>'image/jpeg, image/png, image/gif', 'maxSize'=>1024*1024*10, 'maxFiles'=>1, 'on'=>['upload']], //设置图片的验证规则 ]; } /** * 上传单个文件到阿里云 * @return boolean 上传是否成功 */ public function uploadfile(){ $res['error'] = 1; if ($this->validate()) { $uploadPath = dirname(dirname(__FILE__)).'/web/uploads/'; // 取得上传路径 if (!file_exists($uploadPath)) { @mkdir($uploadPath, 0777, true); } $ext = $this->files->getExtension(); // 获取文件的扩展名 $randnums = $this->getrandnums(); // 生成一个随机数,为了重命名文件 $imageName = date("YmdHis").$randnums.'.'.$ext; // 重命名文件 $ossfile = 'file/'.date("Ymd").'/'.$imageName; // 这里是保存到阿里云oss的文件名和路径。如果只有文件名,就会放到空间的根目录下。 $filePath = $uploadPath.$imageName; // 生成文件的绝对路径 if ($this->files->saveAs($filePath)){ // 上传文件到服务器 $filedata['filename'] = $imageName; // 准备图片信息,保存到数据库 $filedata['filePath'] = $filePath; // 准备图片信息,保存到数据库 $filedata['ossfile'] = $ossfile; // 准备图片信息,保存到数据库 $filedata['userid'] = Yii::$app->user->id; // 准备图片信息,保存到数据库,这个字段必须要,以免其他用户恶意删除别人的图片 $filedata['uploadtime'] = time(); // 准备图片信息,保存到数据库 // 上边这些代码不能照搬,要根据你项目的需求进行相应的修改。反正目的就是记录上传文件的信息 // 老板,这些代码是我搬来的,没仔细看,如果出问题了,你就扣我的奖金吧^_^ $trans = Yii::$app->db->beginTransaction(); // 开启事务 try{ $savefile = Yii::$app->db->createCommand()->insert('file', $filedata)->execute(); //把文件的上传信息写入数据库 $newid = Yii::$app->db->getLastInsertID(); //获取新增文件的id,用于返回。 if ($savefile) { // 如果插入数据库成功 $ossupload = Yii::$app->Aliyunoss->upload($ossfile, $filePath); //调用Aliyunoss组件里边的upload方法把文件上传到阿里云oss if ($ossupload) { // 如果上传成功, $res['error'] = 0; // 准备返回信息 $res['fileid'] = $newid; // 准备返回信息 $res['ossfile'] = $ossfile; // 准备返回信息 $trans->commit(); // 提交事务 } else { // 如果上传失败 unlink($filePath); // 删除服务器上的文件 $trans->rollBack(); // 事务回滚 } } unlink($filePath); // 插入数据库失败,删除服务器上的文件 $trans->rollBack(); // 事务回滚 } catch(Exception $e) { // 出了异常 unlink($filePath); // 删除服务器上的文件 $trans->rollBack(); // 事务回滚 } } } return $res; // 返回上传信息 } /** * 生成随机数 * @return string 随机数 */ protected function getrandnums() { $arr = array(); while (count($arr) < 10) { $arr[] = rand(1, 10); $arr = array_unique($arr); } return implode("", $arr); } }
上記のコードはローカルのテスト環境ではcurl接続タイムアウトエラーを報告しますが、サーバー上で実行する場合は問題ないことに注意してください。
以上がAlibaba Cloud oss を yii2.0 と統合して単一のファイルをアップロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









FastAPI でファイルのアップロードと処理を実装する方法 FastAPI は、使いやすく強力な最新の高パフォーマンス Web フレームワークで、ファイルのアップロードと処理のネイティブ サポートを提供します。この記事では、FastAPI フレームワークでファイルのアップロードおよび処理関数を実装する方法を学び、具体的な実装手順を示すコード例を示します。まず、必要なライブラリとモジュールをインポートする必要があります: fromfastapiimportFastAPI,UploadF

Win10コンピュータのアップロード速度が遅い場合、どうすれば解決できますか?コンピュータを使用しているときに、ファイルのアップロード速度が非常に遅いと感じることがありますが、これはどういうことでしょうか?実際、これはコンピュータのデフォルトのアップロード速度が 20% であるため、アップロード速度が非常に遅いためです。詳細な操作方法を知らない友人も多いです。編集者は、Win11 で C ドライブをフォーマットする手順を以下にまとめました。 . 興味のある方はフォローしてみてください! Win10 のアップロード速度が遅い場合の解決策 1. win+R を押して「ファイル名を指定して実行」を呼び出し、「gpedit.msc」と入力して Enter を押します。 2. 管理テンプレートを選択し、[ネットワーク] - [Qos パケット スケジューラ] をクリックし、[制限] をダブルクリックして帯域幅を予約します。 3. 「有効」を選択します。

1. Kugou Music を開き、プロフィール写真をクリックします。 2. 右上隅にある設定アイコンをクリックします。 3. [音楽作品をアップロード]をクリックします。 4. [作品アップロード]をクリックします。 5. 曲を選択し、[次へ]をクリックします。 6. 最後に[アップロード]をクリックします。

デジタル時代の到来により、音楽プラットフォームは人々が音楽を入手する主な方法の 1 つになりました。しかし、曲を聴いていると歌詞がないことに気づき、非常に不安になることがあります。曲の内容や感情をより深く理解するために、曲を聴くときに歌詞が表示されることを望む人は多いでしょう。 QQ Music は中国最大の音楽プラットフォームの 1 つとして、ユーザーがより音楽を楽しみ、曲の含意を感じることができるように、ユーザーに歌詞をアップロードする機能も提供しています。 QQ Musicに歌詞をアップロードする方法を紹介します。初め

アップロード速度が非常に遅くなりますか?これは、多くの友人がコンピューターにアップロードするときに遭遇する問題だと思います。コンピューターを使用してファイルを転送するときにネットワークが不安定だと、アップロード速度が非常に遅くなります。では、ネットワークのアップロード速度を上げるにはどうすればよいでしょうか?以下では、エディターがコンピューターのアップロード速度が遅いという問題を解決する方法を説明します。ネットワーク速度に関しては、Web ページを開く速度、ダウンロード速度、アップロード速度も非常に重要であることは誰もが知っています。特に一部のユーザーはファイルをネットワーク ディスクにアップロードする必要があることが多いため、アップロード速度が速いと間違いなく節約になります。お金がたくさんあります。時間がなくなりました。アップロード速度が遅い場合はどうすればよいですか?以下では、エディターがコンピューターのアップロード速度が遅い場合の対処方法についての写真とテキストを提供します。コンピューターのアップロード速度が遅いという問題を解決するには、「スタート」-「ファイル名を指定して実行」または「Window キー」をクリックします。

パソコンにカメラが付いていれば写真を撮ることができますが、写真を撮ってアップロードする方法がわからないユーザーもいます。ユーザーは好きな場所に写真をアップロードできるようになります。写真を撮ってコンピュータにアップロードする方法 1. Mac コンピュータ 1. Finder を開き、左側のアプリケーションをクリックします。 2. 開いたら、「カメラ」アプリケーションをクリックします。 3. 下の写真ボタンをクリックしてください。 2. Windows コンピュータ 1. 下の検索ボックスを開いて「カメラ」と入力します。 2. 次に、検索されたアプリケーションを開きます。 3. その横にある写真ボタンをクリックします。

PHP Kuaishou API インターフェイスを介してビデオの再生およびアップロード機能を実装する方法 はじめに: ソーシャル メディアの台頭により、ビデオ コンテンツに対する一般の需要が徐々に増加しています。 Kuaishou は、短編動画をテーマにしたソーシャル アプリケーションとして、多くのユーザーに愛されています。この記事では、PHP を使用して、Kuaishou API インターフェイスを介してビデオ再生およびアップロード機能を実装するコードを記述する方法を紹介します。 1. アクセス トークンの取得 Kuaishou API インターフェイスを使用する前に、まずアクセス トークンを取得する必要があります。トークンはAPIインターフェースにアクセスするためのIDです

Vue は、高度にインタラクティブなアプリケーションの構築に使用できる人気のあるフロントエンド フレームワークです。開発プロセスでは、アバターのアップロードが一般的な要件の 1 つです。そこでこの記事では、Vueにアバターアップロード機能を実装する方法と具体的なコード例を紹介します。サードパーティ ライブラリの使用 アバター アップロード機能を実装するには、vue-upload-component などのサードパーティ ライブラリを使用できます。このライブラリは、Vue アプリケーションに簡単に統合できるアップロード コンポーネントを提供します。これが簡単な例です
