기존에 html로 나타난 aws s3 bucket list => Vue(Vuetify)로 변경 하기

1.Vue Project 생성

VSCode terminal에서 vue create filename 으로 자신이 정한 filename의 vue 프로젝트를 생성해준다.

default값은 Vue2로 생성해주었다. filename은 소문자로 구성되어야한다. filename(o),  fileName(x)

이후 cd filename 으로 생성한 프로젝트로 이동 후 

npm run serve를 하면 vue 프로젝트 화면을 볼 수 있다.

이후 terminal에 vue add vuetify를 입력후 Vuetify 2 - Vue CLI (recommended) 를 선택해주

아래와 같은 화면이 나오는 모습을 확인할 수 있을 것이다.

2.하위 디렉토리로 가서 HelloWorld.vue 파일을 열어준다. filename -> src -> components -> HellowWorld.vue

terminal에서 npm install aws-sdk --save로 aws-sdk 파일을 받아 준 후

HelloWorld.vue 파일을 아래와 같이 수정해 준다.

<template>
  <v-container>
    <h1>fileList</h1>
        <div v-for="(folder ) in AWSFolderList" :key="folder.Key">
        <li @click="viewFolder(folder.Prefix)">{{ folder.Prefix }}</li></div>
        <div v-for="(file, index ) in AWSFileList" :key="file.Key">
        <v-checkbox @click="fileDir(file, index)" class="shrink mr-0 mt-0"><template v-slot:label><div>{{ file.Key }}</div></template></v-checkbox>
          </div>
        <v-btn @click="fileList">리스트</v-btn>
  </v-container>
</template>

<script>
import AWS from 'aws-sdk'
export default{
  data(){
    return{
      file: null,
      fileBucketName: 'BUCKETNAME',
      bucketRegion: 'REGION',
      IdentityPoolId: 'POOLID',
      AWSFolderList: [],
      AWSFileList: [],
    }
  },
  created(){
    this.fileList();
  },
  methods:{
    handlefileSelect(){
      this.file = this.$refs.file.files[0];
      console.log(this.file,'select');
    },
    fileList(){
      AWS.config.update({
      region: this.bucketRegion,
      credentials: new AWS.CognitoIdentityCredentials({
      IdentityPoolId: this.IdentityPoolId
        })
      });
      var s3 = new AWS.S3({
        apiVersion: "2006-03-01",
        params: { Bucket: this.fileBucketName }
      });
      s3.listObjects({ Delimiter: "/",  }, (err, data) => {
      if (err) {
        return alert("There was an error listing your files: " + err.message);
      } else {
        this.AWSFolderList = data.CommonPrefixes;
        this.AWSFileList = data.Contents;
        console.log(data);
      }
    });
      },
      viewFolder(e){
        AWS.config.update({
      region: this.bucketRegion,
      credentials: new AWS.CognitoIdentityCredentials({
      IdentityPoolId: this.IdentityPoolId
        })
      });
      var s3 = new AWS.S3({
        apiVersion: "2006-03-01",
        params: { Bucket: this.fileBucketName }
      });
        console.log(e);
        s3.listObjects({ Delimiter: "/", Prefix: e }, (err, data) => {
      if (err) {
        return alert("There was an error listing your files: " + err.message);
      } else {
        this.AWSFolderList = data.CommonPrefixes;
        this.AWSFileList = data.Contents;
        console.log(data);
      }
    });
      },
      fileDir(e){
        console.log(e);
      },
  }

}
</script>

<style>
</style>

aws s3의 bucket과 동일하게 리스트를 불러올 수 있다.

폴더를 클릭하면 하위 디렉토리로 이동 파일을 클릭시 console창에서 checkbox 의 해당 data 값을 확인할 수 있다.

 

'AWS' 카테고리의 다른 글

React Project AWS EC2 배포 하기  (1) 2023.06.02
AWS S3 buket file list 나타내기  (0) 2023.03.21
S3 file upload  (0) 2023.03.15
AWS S3 버킷 생성 및 설정  (0) 2023.03.14

+ Recent posts