您可以使用Axios库来进行HTTP请求和文件操作。以下是Vue 3中获取远程HTTP文件服务器文件列表、访问读取、下载、上传的示例代码:
<template>
<div>
<h2>Remote File List</h2>
<ul>
<li v-for="file in fileList" :key="file.name">
{{ file.name }}
</li>
</ul>
<h2>File Content</h2>
<textarea v-model="fileContent" rows="10" cols="50"></textarea>
<button @click="downloadFile">Download File</button>
<input type="file" @change="uploadFile" accept=".txt">
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
fileList: [],
fileContent: '',
selectedFile: null,
};
},
created() {
// 获取文件列表
this.getFileList();
},
methods: {
async getFileList() {
const response = await axios.get('http://your-file-server-url.com/api/list-files');
this.fileList = response.data;
},
async readFile() {
const response = await axios.get(`http://your-file-server-url.com/api/read-file?name=${this.selectedFile.name}`);
this.fileContent = response.data;
},
async downloadFile() {
const response = await axios.get(`http://your-file-server-url.com/api/download-file?name=${this.selectedFile.name}`, {
responseType: 'blob',
});
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', this.selectedFile.name);
document.body.appendChild(link);
link.click();
},
async uploadFile(event) {
const file = event.target.files[0];
const formData = new FormData();
formData.append('file', file);
await axios.post('http://your-file-server-url.com/api/upload-file', formData);
// 上传完成后重新获取文件列表
this.getFileList();
},
},
};
</script>
在这个示例代码中,您需要将 your-file-server-url.com
替换为您的远程HTTP文件服务器的URL。您还需要实现 /api/list-files
、/api/read-file
、/api/download-file
和 /api/upload-file
这些API来处理文件操作。