【求助】iosAPP端内嵌H5不能上传ppt和doc文件(灰色无法选中),内嵌的问卷星页面是可以正常上传的。
代码如下:有人说去掉前面的“.”我去掉也不行;把.doc改成doc也不行,请教大佬如何修改
// #ifdef H5
uni.chooseFile({ // 文件选择
count: 1, // 默认100
extension:['txt', 'doc', 'pdf', 'ppt', 'xls', 'zip'],
success: (res) => {
try{
uni.showLoading({ title: '上传中' })
setTimeout(async () => {
await this.uniUploadFile(res.tempFilePaths, res.tempFiles)
uni.hideLoading()
this.$api.msg('上传成功')
}, 500)
} catch (e) {
uni.hideLoading()
this.$api.msg(失败:${e}
)
}
},
fail: (err) => {
this.$api.msg(本地读取错误
)
}
});
// #endif
很抱歉,我之前给出的示例代码可能会导致一些混淆。由于我无法直接访问您的服务器和环境,也无法提供完整可运行的示例。
下面,我将为您提供一个简化的前端和后端代码示例,帮助您了解文件上传的基本流程。这里使用Vue.js作为前端框架,Node.js作为后端服务器,并使用express框架来处理文件上传。
前端代码 (Vue.js示例):
<template>
<div>
<input type="file" @change="selectFile" />
<button @click="uploadFile">上传文件</button>
</div>
</template>
<script>
import axios from "axios";
export default {
methods: {
selectFile(event) {
this.selectedFile = event.target.files[0];
},
async uploadFile() {
if (!this.selectedFile) {
alert("请选择文件");
return;
}
const formData = new FormData();
formData.append("file", this.selectedFile);
try {
const response = await axios.post("/api/upload", formData);
console.log(response.data);
alert("文件上传成功!");
} catch (error) {
console.error(error);
alert("文件上传失败!");
}
},
},
};
</script>
后端代码 (Node.js示例,使用Express框架):
const express = require("express");
const app = express();
const multer = require("multer");
const path = require("path");
// 使用multer中间件处理文件上传
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads/");
},
filename: function (req, file, cb) {
const ext = path.extname(file.originalname);
cb(null, ${file.fieldname}-${Date.now()}${ext}
);
},
});
const upload = multer({ storage: storage });
// 文件上传接口
app.post("/api/upload", upload.single("file"), (req, res) => {
if (!req.file) {
return res.status(400).json({ error: "No file uploaded" });
}
// 在这里处理上传的文件,例如保存到服务器或其他操作
// 可以根据需要修改服务器返回的数据
return res.json({ success: true, message: "File uploaded successfully" });
});
const port = 3000;
app.listen(port, () => {
console.log(Server running on port ${port}
);
});
上述代码中,前端部分使用Vue.js实现了一个简单的文件上传界面,通过axios库向后端发送文件数据。后端部分使用Node.js和Express框架处理文件上传请求,并使用multer中间件来解析文件数据并保存到指定目录。
为使示例能够运行,您需要安装Vue.js、axios、Node.js和express,并根据示例代码调整文件路径和接口URL。同时,您可能需要根据自己的后端技术栈和服务器配置做适当的调整。
请注意,示例中仅包含基本的文件上传流程,实际应用中可能需要更多的错误处理和安全性措施。希望这个示例能帮助您了解文件上传的基本原理,并在您的项目中得到有益的启示。