新しいserver.jsを作成する 糸初期化 -y 糸を追加エクスプレスノードモン -D var express = require("express"); 定数 fs = require("fs"); var パス = require("パス"); const multer = require("multer"); // パスを指定します var app = express(); app.use(express.json()); app.use(express.urlencoded({extended: true})); // フロントエンドはクロスドメインの問題を解決します app.all("*", (req, res, next) => { res.header("アクセス制御許可オリジン", "*"); 次(); }); // 静的リソースにアクセスする app.use(express.static(path.join(__dirname))); // ファイルのアップロード app.post("/upload", multer({ dest: "./public" }).any(), (req, res) => { const { フィールド名、 元の名前 } = req.files[0]; // 新しいパスを作成します const name = fieldname.slice(0, fieldname.indexOf(".")); const newName = "public/" + name + path.parse(originalname).ext; fs.rename(req.files[0].path, newName, 関数(err) { もし(エラー){ res.send({ code: 0, msg: "アップロードに失敗しました", data: [] }); } それ以外 { res.send({ code: 1, msg: "アップロード成功", data: newName }); } }); }); // ファイルのダウンロード app.get('/download', function(req, res) { res.download('./public/test.xls'); }); // 画像のダウンロード app.get('/download/img', function(req, res) { res.download('./public/2.jpg'); }); ポートを 9527 にします。 app.listen(port, () => console.log(`ポートが開始されました: http://localhost:${port}`)); (1)フロントエンドファイルアップロードリクエスト 最初のタイプ: フォーム <フォームアクション="http://localhost:9527/upload" メソッド="POST" encType="multipart/form-data"> <input type="file" name="user"/> <input type="submit" /> </フォーム> 最初のタイプ: 入力ボックス <input type="file" @change="changeHandler($event)"/> changeHandler(イベント) { ファイルをevent.target.files[0]とします。 console.log("ファイル",ファイル) データを新しいFormData()に格納します。 data.append(files.name,files); console.log("データ",データ) axios.post("http://localhost:9527/upload",データ,{ ヘッダー:{ "コンテンツタイプ":"マルチパート/フォームデータ" } }).then(res =>{ コンソールログ("res",res) }) }, (2)フロントエンドファイルのダウンロード 最初の方法: バックエンドはダウンロードリンクアドレスを返し、フロントエンドはそれを直接使用できます。 <input type="button" value="クリックしてダウンロード" @click="handleDownload"> ハンドルダウンロード() { アクシオス({ メソッド: 'get'、 URL: "http://localhost:9527/download", データ: { test: 「テストデータ」 }, responseType: "arraybuffer" // arraybuffer は js でバイナリを処理するためのインターフェースです}).then(response => { // 返されたバイナリ データを使用して Blob インスタンスを作成します if(!response) return; blob = new Blob([response.data], { タイプ: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", }) // .xlsx ファイルの場合 // URL.createObjectURL を通じてファイル パスを生成します。let url = window.URL.createObjectURL(blob) console.log("url==========",url) // タグを作成する let ele = document.createElement("a") ele.style.display = 'なし' // href属性をファイルパスに設定し、download属性をファイル名に設定します。ele.href = url ele.download = this.name // ページに a タグを追加し、クリックをシミュレートします。 document.querySelectorAll("body")[0].appendChild(ele) ele.click() // a タグを削除する ele.remove() }); }, (3)追加:バイナリストリームイメージのダウンロード // バイナリストリームイメージファイルをダウンロード downLoadImg() { アクシオス({ メソッド: 'get'、 URL: `http://localhost:9527/download/img`, レスポンスタイプ: '配列バッファ', パラメータ: { id: 12 } }).then(res => { var src = 'data:image/jpg;base64,' + btoa(new Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), '')) // this.srcImg = src // 画像表示 var a = document.createElement('a') a.href = src a.download = '2.jpg' クリック() 削除() }) } これで、フロントエンドの vue+express によるファイルのアップロードとダウンロードの例の実装に関するこの記事は終了です。vue express のファイルのアップロードとダウンロードに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 負のz-indexを持つ要素がクリックできない問題の解決策
Dockerのインストール依存パッケージをインストールする sudo yum install -y ...
この記事では、パズル効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的...
目次MySQLを初期化するMySQL サービスをインストール + MySQL サービスを開始MySQ...
目次1. v-text (v-instruction name = "variable&q...
目次典型的なウォーターフォールウェブサイトウォーターフォールフローレイアウトの原則一般的な考え方具体...
CJK は CJK Unified Ideographs の略称で、「中国語、日本語、韓国語の統一表...
透明を含む5つの肌の色を変更するには50行のコードが必要です最初にコードをお渡ししますので、ご自身で...
序文プロジェクト内のパズルゲーム(デジタル華容路とも呼ばれる)を再構築するのに 2 日かかりました。...
ヒント: 以下の操作はすべて root 権限で実行されます。 # MySQL がインストールされてい...
1. 背景インターネット アプリケーションの急速な更新と反復という状況では、従来の手作業や単純なスク...
序文Linux 環境で作業するエンジニアは、これらの面倒な命令とパラメータのコマンドラインにきっと驚...
目次序文1. GMT GMTとはGMTの歴史2. UTC UTCとはUTC は次の 2 つの部分で構...
この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
この記事では、ミニプログラムで製品属性選択または仕様選択を実装するための具体的なコードを参考までに共...
目次1: 単一マシンのパスワードフリーログイン構成1. 仮想マシンのホスト名を設定する2. 仮想マシ...