제2회 - Web API 와 Web UI 로 파일 다운로드 (Web UI 편)
소개
마지막으로 파일을 다운로드하는 간단한 웹 API 및 웹 UI 샘플을 소개합니다.
첫 번째 의 전회는 Node.js + Express.js 에서의 Web API 를 소개했습니다.
두 번째 이번에는 Vue.js + Vuetify 으로 간단한 웹 UI를 만들고 이전 웹 API를 두드려 실제로 파일을 다운로드합니다.
환경
OS: macOS Mojave 10.14.6
Vue.js: 2.6.10
Vuetify: 2.1.0
axios : 0.19.0
file-saver : 2.0.2
Download.vue
Download.vue
<template>
<v-container>
<v-row>
<v-col cols="2">
<v-btn
v-on:click="click('sample.csv')"
color="primary"
block
>
Download csv
</v-btn>
</v-col>
<v-col cols="2">
<v-btn
v-on:click="click('sample.png')"
color="primary"
block
>
Download image
</v-btn>
</v-col>
</v-row>
</v-container>
</template>
<script>
import axios from 'axios'
import urljoin from 'url-join'
import { saveAs } from 'file-saver'
export default {
methods: {
async click (fileName) {
const response = await axios.get(urljoin('http://localhost:3000/api/download'), {
responseType: 'blob',
params: {
'file': fileName
}
}).catch((error) => {
console.log(error)
})
if (response && (200 == response.status)) {
const contentDisposition = response.headers["content-disposition"]
const contentDispositions = contentDisposition.split(';')
const fileNames = contentDispositions[contentDispositions.length - 1].split('=')
fileName = fileNames[fileNames.length - 1]
saveAs(response.data, fileName)
}
}
}
}
</script>
버튼을 2개 배치한 것만의 간단한 UI입니다.
다운로드하는 파일은 CSV와 PNG의 두 종류입니다.
버튼을 클릭하면 해당 파일 이름(sample.csv or sample.png)을 인수로 사용하여 Web API를 실행합니다.
웹 API 실행 후 자동으로 파일을 저장합니다.
웹 API 실행
Download.vue(발췌)
const response = await axios.get(urljoin('http://localhost:3000/api/download'), {
responseType: 'blob',
params: {
'file': fileName
}
}).catch((error) => {
console.log(error)
})
해설
웹 API를 실행하려면 axios를 사용합니다.
또한
responseType: 'blob'
에서 받는 형식을 Blob 형식으로 지정합니다.(후술하는 saveAs@file-saver 로 Blob 형의 데이터를 지정하기 위해)
파일 저장
Download.vue(발췌)
const contentDisposition = response.headers["content-disposition"]
const contentDispositions = contentDisposition.split(';')
const fileNames = contentDispositions[contentDispositions.length - 1].split('=')
fileName = fileNames[fileNames.length - 1]
saveAs(response.data, fileName)
해설
Web API 측에서
content-disposition
(헤더)에 파일명을 지정하고 있어, 보존시의 파일명에 사용하고 있습니다.파일 저장은 file-saver 를 사용합니다 (매우 편리).
saveAs에 Blob 형식의 데이터와 파일 이름을 지정하면 자동으로 다운로드가 시작됩니다.
동작 확인
첫 번째 응용 프로그램도 함께 시작됩니다.
각 버튼을 누르면 파일 다운로드가 시작되었음을 알 수 있습니다.
요약
2회에 걸쳐 Web API와 Web UI로 파일 다운로드의 샘플을 소개했습니다.
복잡한 코드를 작성하지 않고도 여러 라이브러리를 사용하여 쉽게 구현할 수있었습니다.
Web API 로 데이터를 취득해, 보존용의 모듈로 데이터에 데이터를 건네주고 있을 뿐이므로, 어레인지도 하기 쉽다고 생각합니다.
이번에 사용한 코드는 GitHub에서 공개하고 있습니다.
htps : // 기주 b. 코 m / 퐁코 2 분 / ゔ 에치 fy - ぃ ぇ ぉ
Reference
이 문제에 관하여(제2회 - Web API 와 Web UI 로 파일 다운로드 (Web UI 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ponko2bunbun/items/514c7a167cb2049446ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)