반응형
파일을 base64로 변환하고 Vuejs에서 v-model 바인딩 추가
나는 파일 입력 필드가 있는 구성요소를 만들고 있고, 기능을 통해 렌더링되고 있다.VueJs
:
export default {
name: 'nits-file-input',
props: {
label: String,
},
render (createElement) {
return createElement('div', { class: 'form-group m-form__group'}, [
createElement('label', this.label),
createElement('div'),
createElement('div', { class: 'custom-file'},[
createElement('input', {
class: 'custom-file-input',
attrs: { type: 'file' },
domProps: {
value: self.value
},
on: {
input: (event) => {
var reader = new FileReader()
reader.readAsDataURL(event.target.value)
reader.onload = function () {
console.log(reader.result);
};
this.$emit('input', event.target.value)
}
}
}),
createElement('label', { class: 'custom-file-label'}, 'Choose File')
])
])
}
}
v-model에서 값을 가질 때 파일의 경로를 얻지만base64
요소. 현재 내 콘솔에서 다음 오류가 발생하는 경우:
'readAsData'를 실행하지 못함'FileReader'의 URL: 매개 변수 1이 'Blob' 유형이 아님
날 좀 도와줘.고마워요.
당신은 설정해야 한다.reader.readAsDataURL(event.target.files[0])
대신에
reader.readAsDataURL(event.target.value)
:
on: {
input: (event) => {
var reader = new FileReader()
reader.readAsDataURL(event.target.files[0])
reader.onload = () => {
console.log(reader.result);
};
this.$emit('input', event.target.files[0])
}
}
로 변경reader.readAsDataURL(event.target.files[0])
다음 게시물은 https://alligator.io/vuejs/file-reader-component/에 도움이 될 수 있다.
참조URL: https://stackoverflow.com/questions/53944112/convert-file-to-base64-and-add-v-model-binding-in-vuejs
반응형
'Programing' 카테고리의 다른 글
Vue.js 템플릿에서 임시 변수를 정의하는 방법 (0) | 2022.04.10 |
---|---|
Vuex + Jest에서 스토어에 전화를 거는 게이터를 어떻게 유닛 테스트하는가? (0) | 2022.04.10 |
Vue.js 계산된 속성은 이벤트를 통과할 때 반응성을 잃는다. (0) | 2022.04.10 |
Vue 라이브러리 선택을 사용하여 vue 선택 필드에 여러 레이블을 표시하는 방법 (0) | 2022.04.10 |
vue2-daterange-picker에서 "Clear" 버튼을 구현하는 방법? (0) | 2022.04.10 |