Vue+thinkphp5.1+axiosでファイルアップロードを実現

Vue+thinkphp5.1+axiosでファイルアップロードを実現

この記事では、thinkphp5.1 + Vue+axiosを使用してファイルをアップロードする方法を参考までに紹介します。具体的な内容は次のとおりです。

序文

thinkphp5.1 + Vue+axios+を使用してファイルをアップロードする

1. ページコード

<!DOCTYPE html>
<html>
<ヘッド>
    <メタ文字セット="utf-8">
    <title>デモをアップロード</title>
    <スタイル>
        .fileBtn{
            幅: 180ピクセル;
            高さ: 36px;
            行の高さ: 36px;
            背景: スカイブルー;
            境界線の半径: 5px;
            表示: ブロック;
            テキスト配置: 中央;
            色: 白;
        }
        [v-マント] {
            表示: なし;
        }
    </スタイル>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<本文>
<div id="アプリ">
    <h1 v-cloak>{{メッセージ}}</h1>
    <フォーム>
        <input type="file" name="file" ref="file" id="file" v-on:change="upload" style="visibility: hidden;" />
        <label for="file" class="fileBtn">アップロード</label>
    </フォーム>
</div>

</本文>
</html>

<スクリプト>
    var vue = 新しい Vue({
        el:'#app',
        データ:{
            メッセージ: 'ファイルのアップロード',
        },
        方法:{
            アップロード:関数(ファイル) {
                コンソールにログ出力します。
                var フォーム = 新しい FormData()
                var configs = {
                    ヘッダー:{'Content-Type':'multipart/form-data; charse=UTF-8'}
                };
                フォームに追加します('ファイル'、ファイル.ターゲット.ファイル[0]);
                axios.post('http://127.0.0.1/index/index/upload', フォーム、設定)
                    .then(関数 (応答) {
                        応答データコード == 0 の場合
                            alert('ファイルが正常にアップロードされました');
                        } それ以外 {
                            alert('ファイルのアップロードに失敗しました');
                        }
                        file.target.value = '';

                    })
                    .catch(関数 (エラー) {
                        コンソール.log(エラー);
                    });
            }
        }
    });

</スクリプト> 

2. クロスドメインインターフェースの問題を解決する

ここでは Apache 2.4.8 が使用されています。httpd.conf を見つけて、次の設定行を追加します。

ヘッダーセット Access-Control-Allow-Origin * 

3. バックエンド処理アップロード部分

/**
     * ファイルアップロード方法の検証 */
    パブリック関数アップロード()
    {
        試す{
            $file = リクエスト()->file('file');

            空の場合($file) {
                echo json_encode(['code' => 1,"msg" => 'アップロードファイルを選択してください'],JSON_UNESCAPED_UNICODE);exit;
            }
            // フレームワークアプリケーションのルートディレクトリ /uploads/ ディレクトリに移動します $info = $file->move( '../uploads');
            $infoの場合{
                // アップロード成功後にアップロード情報を取得する // jpg を出力する
                echo json_encode(['code' => 0,"msg" => 'success'],JSON_UNESCAPED_UNICODE);exit;
            }それ以外{
                // アップロードに失敗しました。エラー情報を取得できませんでした。 echo json_encode(['code' => 1,"msg" => 'error'],JSON_UNESCAPED_UNICODE);exit;
            }
        } キャッチ (例外 $e) {
            echo json_encode(['code' => 1,"msg" => 'error'],JSON_UNESCAPED_UNICODE);終了;
        }
}

4. 実際の効果

テスト成功!

vue.js の学習チュートリアルについては、特別トピックの vue.js コンポーネント学習チュートリアルと Vue.js フロントエンド コンポーネント学習チュートリアルをクリックして学習してください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ファイルアップロードの脆弱性とバイパス技術を使用したPHPセキュリティ攻撃と防御の詳細
  • php.ini ファイルのアップロード サイズ構成を変更する PHP ケース スタディ
  • PHP ファイルを OSS にアップロードし、リモート Alibaba Cloud OSS ファイルを削除する
  • phpcmsv9.0 の任意ファイルアップロード脆弱性の分析
  • PHP で base64 エンコードされたファイルをアップロードする際の問題の詳細な説明
  • PHPはファイルのアップロードとダウンロードを実装します
  • ファイルがアップロードされない場合の PHP ケース分析と解決策

<<:  Ubuntu環境でPHPとNginxをコンパイルしてインストールする方法

>>:  MySQL 8.0.12 簡単インストールチュートリアル

推薦する

MySQL トランザクション分析

取引トランザクションはビジネス ロジックの基本単位です。各トランザクションは一連の SQL ステート...

MySQLでユーザーを作成し、権限を管理する方法

1. ユーザーとパスワードの作成方法1. MySQLデータベースに入る mysql> mysq...

MySQL 5.7.21 winx64 グリーンバージョンのインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 5.7.21のインストールと設定方法を記録しています。具体的な内容は以下のと...

MySQLでorder byを使用せずにランキングを実装する3つの方法のまとめ

ビジネスを想定: 2位の従業員の給与情報を見るデータベースを作成する emps が存在する場合はデー...

Ubuntu 14.04 で QT5 をインストール、設定、アンインストールするための詳細な手順

1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...

Centos7 で yum を使用して Ceph 分散ストレージをインストールするチュートリアル

目次序文yumソース、epelソースを設定するCephソースの設定Cephとそのコンポーネントをイン...

NextCloud プライベート クラウド ストレージ ネットワーク ディスクの構築に関する詳細なチュートリアル

Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...

React NativeとiOSの相互作用の詳細な説明

目次前提条件RNはiOSに価値を渡す方法1: ネイティブに値を通常通り渡す方法2: コールバック関数...

CentOS 6.4 で rpm を使用して MySQL をオフラインでインストールする

rpmインストールパッケージを使用してmysqlをオフラインでインストールします。参考までに準備:公...

Linux 環境の Apache で https サービスを有効にする方法の詳細な説明

この記事では、Linux 環境の Apache で https サービスを有効にする方法について説明...

HTMLはBaidu百科事典のナビゲーションドロップダウンメニュー機能を模倣します

HTML は、Baidu 百科事典のナビゲーション ドロップダウン メニュー機能を模倣します。具体的...

Windows 10 Home Edition に Docker をインストールする方法

最近、プロジェクトをアップグレードするために Docker を使用しました。これまで使用したことがな...

オンラインMySQLオプティマイザの誤判断によって発生した低速クエリイベントを記録する

序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...

CSS3 のカラー値 RGBA とグラデーションカラーの使用方法の紹介

CSS3以前は、グラデーション画像は背景画像としてのみ使用できました。 CSS3 のグラデーション構...

ウェブサイトのパフォーマンスを向上させるためのウェブサーバーの改善

<br />このシリーズの最初のセクションでは、Web サイトのパフォーマンスを向上させ...