typescript - 如何在 vue.js 版本 3 中上传文件
问题描述
我想使用 vue.js 版本 3 上传文件。
我可以导入ref
但不确定如何使用它来获取文件数据?
文件上传测试.vue
<template>
<h1>File Upload</h1>
<div class="container">
<div>
<label>File
<input type="file" id="file" ref="file" v-on:change="onChangeFileUpload()"/>
</label>
<button v-on:click="submitForm()">Upload</button>
</div>
</div>
</template>
<script src="./FileUploadTest.ts" lang="ts"></script>
文件上传测试.ts
import { Options, Vue } from "vue-class-component";
import { ref } from 'vue';
import axios from "../../axios/index";
@Options({})
export default class FileUploadTest extends Vue {
protected file: any;
submitForm() {
const formData = new FormData();
formData.append('bytes', this.file);
axios.post('https://localhost:44313/api/app/file/save',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
).then(function (data) {
console.log(data.data);
})
.catch(function () {
console.log('FAILURE!!');
});
}
onChangeFileUpload() {
debugger;
this.file = ref(["file"]).value;
}
};
实际文件内容未存储在 this.file 变量中
this.file = ref(["file"]).value;
解决方案
Vue3.js 使用组合 api 将文件上传到服务器
<template>
<input ref="file" v-on:change="handleFileUpload()" type="file">
</template>
<script>
import { ref} from "vue"
export default{
name:'Add',
setup() {
const file = ref(null)
const handleFileUpload = async() => {
// debugger;
console.log("selected file",file.value.files)
//Upload to server
}
return {
handleFileUpload,
file
}
}
}
</script>
推荐阅读
- arrays - 为什么我的 SwiftUI JSON 无法正确解析?
- r - Ubuntu-没有名为 shinydashboard 的软件包?
- json - Fullcalendar scheduler v5 自动刷新事件
- hibernate - 是否可以使用 nativeQuery 标志(从子句中的子查询)转换查询?
- python - 命令“python setup.py egg_info”在 C:\Users\ELYSSU~1\AppData\Local\Temp\pip-build-7ado9ytn\cryptography\ 中失败,错误代码为 1
- php - Laravel 没有读取 AWS Lambda 上的环境变量
- amazon-ec2 - AWS 负载均衡器 https 配置不起作用
- validation - Puppet 验证使用端口(例如 1.2.3.4:5678)查找 ip 地址
- javascript - 动态创建异步函数(错误)
- ios - PayTM All-In-One SDK 支付卡在处理中,并且没有调用代表