赞
踩
html部分
<h1>文件上传</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="pic" multiple ref="pic">
<input type="button" @click="uploadFile" value="上传">
</form>
uploadFile() {
//拿到上传的图片
var imgs = this.$refs.pic.files;
for (let i = 0; i < imgs.length; i ) {
//逐个获取图片
let file = imgs[i];
//使用createObjectURL方法生成图片缩略图预览
let src = window.URL.createObjectURL(file);
//上传该图片到服务器端并拿到返回的服务器端图片地址
let url = await uploadImg(file, this.$data.urlList);
//构造数组
this.$data.urlList.push({
src: src,
name: file.name,
url: "localhost/" url
});
}}

//上传一个图片文件async function uploadImg(file, urlList) {
var formData = new FormData();
formData.append("pic", file);
let url = await new Promise((resolve, reject) => {
axios.post('/upload', formData, {
headers: {
"Content-Type": "multipart/form-data"
}
})
.then((res) => {
resolve(res.data);
})
.catch((err) => {
console.log(err);
});
})
//返回服务器上对应地址
return url;
}

let url = await uploadImg(file, this.$data.urlList);
app.post("/upload", function(req, res) {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
let imgPath = files.pic.path
let imgName = files.pic.name
// 同步读取文件
let data = fs.readFileSync(imgPath)
// 存储上传的图片,同时获取静态图片地址并返回客户端
fs.writeFile("static/" imgName, data, function(err) {
if (err) {
console.log(err)
return;
}
let itemUrl = {
"path": "static/" imgName
};
let url = "static/" imgName;
res.send(url);
})
})
});

<h1>图片列表</h1><div class="img-wrapper">
<div class="uploading" v-for="(item, index) in urlList" :key="index">
<div>
<img class="uploading-image" :src="item.src" alt="">
</div>
<div class="uploading-info">
<span class="uploading-name">
<a target="_blank" :href="item.src">{{ item.name }}</a>
</span>
<span class="copy" :data-clipboard-text="item.url">复制</span>
</div>
</div>
</div>
downloadURL() {
var imgURLS = [];
//设置excel标题
imgURLS.push(["序号", "图片名称", "URL链接"]);
//获取所有图片url链接信息
this.$data.urlList.forEach((item, index) => {
//构建一个数组
var itemArray = [index 1].concat(item.name, item.url);
//构建二维数组
imgURLS.push(itemArray);
});
//生成工作表结构
const ws = XLSX.utils.aoa_to_sheet(imgURLS);
//设置三列单元格宽度
var wscols = [{
wch: 6
}, {
wch: 50
}, {
wch: 50
}];
ws['!cols'] = wscols;
//生成excel基本数据结构
const wb = XLSX.utils.book_new();
//生成表名字为SheetJS的excel工作区
XLSX.utils.book_append_sheet(wb, ws, "SheetJS");
//导出excel
XLSX.writeFile(wb, "export.xlsx");}

npm install
node app
浏览器输入: localhost
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。