はじめに
filepondというライブラリを使用してファイルアップロード機能を実装していたが、postパラメータをサーバー側に渡すところで少し躓いたのでメモ。
環境
vue@2.6.11
vue-cli 2.9.6
Laravel Framework 6.5.0
filepond@4.9.5
やったこと
filepond インストール
filepondの導入と基本的な使い方はいろいろと記事があるので割愛。
参考にさせて頂いたサイト
pqina.nl
File metadata プラグインインストール
公式ページのFile metadataの項目を参考にしてインストール
npm i filepond-plugin-file-metadata --save
vueファイル ユーザーIDをPostで送る
<template>
<file-pond
:server="url"
allowRevert="false"
instantUpload="false"
/>
</template>
<script>
import vueFilePond, { setOptions } from "vue-filepond";
import "filepond/dist/filepond.min.css";
/* Plugin */
import FilePondPluginFileMetadata from "filepond-plugin-file-metadata";
const FilePond = vueFilePond(
FilePondPluginFileMetadata
);
export default {
components: { FilePond },
data() {
return {
url: "http://localhost:8000/api/fileupload",
userId: 1,
}
},
/** 中略 */
mounted() {
//ここでパラメータをセット
setOptions({
fileMetadataObject: {
userId: this.userId
}
});
}
...
サーバー側(php)
use Illuminate\Http\Request;
public function postFileUpload(Request $request)
{
$input = json_decode($request->input('filepond'));
//ユーザーID取得
$userId = $input->userId;
//なんらかの処理
}
終わりに
とりあえず動くが、ファイルのメタデータとしてデータを渡している?のは違和感がある。 良い方法があれば教えていただければうれすぃ