摘要:部分,選擇文件為例中上傳文件部分,主要用到的是和告訴不要處理發送的數據告訴不要設置請求頭失敗后臺接收部分解析用的是上傳的相關參數接收文件觸發判斷文件類型是否是遍歷上傳文件解析成功解析數據文件格式不正確系統錯誤上傳出錯放棄上傳參考鏈接
1.html部分,選擇文件(excel為例)
2.js中上傳文件部分,主要用到的是jequery和FormData
var formData = new FormData($("#uploadForm")[0]); formData.append("mapType", "baidu"); $.ajax({ url: "/upload/order", type: "POST", data: formData, processData: false, // 告訴jquery不要處理發送的數據 contentType: false // 告訴jquery不要設置content-Type請求頭 }).done(function (res) { }).fail(function (res) { console.log("失敗"); });
3.后臺node接收部分,解析excel用的是"node-xlsx"
const express = require("express"); const fs = require("fs"); const formidable = require("formidable"); const xlsx = require("node-xlsx"); const router = express.Router(); router.post("/order", (req, res) => { console.log(" ########## POST /upload ####### "); let fileTypeError = false; const targetPath = `${__dirname}/upload`; const form = new formidable.IncomingForm(); form.encoding = "utf-8"; form.keepExtensions = true; form.maxFieldsSize = 10 * 1024 * 1024; form.uploadDir = targetPath; const files = []; const fields = []; let mapType = "gaode"; form.on("field", (field, value) => { // 上傳的相關參數("mapType", "baidu") if (field === "mapType")mapType = value; fields.push([field, value]); }); form.on("file", (field, file) => { // 接收文件觸發 console.log(`upload file: ${file.name}`); // 判斷文件類型是否是xlsx if (file.type !== "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { fileTypeError = true; } files.push([field, file]); }); form.on("end", () => { // 遍歷上傳文件 let fileName = ""; let obj = ""; const folderExists = fs.existsSync(targetPath); if (folderExists) { const dirList = fs.readdirSync(targetPath); dirList.forEach(async (item) => { if (!fs.statSync(`${targetPath}/${item}`).isDirectory()) { console.log(`parse item:${targetPath}/${item}`); fileName = `${targetPath}/${item}`; if (!fileTypeError) { // 解析excel obj = xlsx.parse(fileName, { cellDates: true }); console.log(JSON.stringify(obj)); res.send({ code: 10000, msg: "成功解析數據", resOrders: resOrderObjs }); } else { res.send({ code: 20003, msg: "文件格式不正確" }); } fs.unlinkSync(fileName); // delete file } }); } else { res.send({ rtnCode: "1", rtnInfo: "系統錯誤" }); } }); form.on("error", (err) => { res.send({ rtnCode: "1", rtnInfo: "上傳出錯" }); }); form.on("aborted", () => { res.send({ rtnCode: "1", rtnInfo: "放棄上傳" }); }); form.parse(req); });
參考鏈接:
http://www.cnblogs.com/lyr121...
https://lipeishang.github.io/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91940.html
摘要:今天有一個坑,同時要上傳圖片和文件,而且圖片要展示縮略圖,文件要展示列表。我的思路是首先,只上傳附件照片,這個直接看的官方例子就行,不僅僅上傳附件照片,還同時上傳其他參數。然后,再做上傳照片和文件,上傳其他參數,其實也就是文件合并。 今天有一個坑,同時要上傳圖片和文件,而且圖片要展示縮略圖,文件要展示列表。 我的思路是: 首先,只上傳附件照片,這個直接看ele的官方例子就行,不僅僅上傳...
摘要:網址功能單圖多圖上傳圖片上傳預覽上傳進度條分組上傳,分組查詢新建分組,刪除分組刪除圖片選擇圖片目錄結構前端利用搭建,中引入子組件。實現分組的新增查詢刪除。利用模塊實現刪除文件功能。 公司要寫一些為自身業務量身定制的的組件,要基于Vue,寫完后擴展了一下功能,選擇寫圖片上傳是因為自己之前一直對這個功能比較迷糊,所以這次好好了解了一下。演示在網址打開后的show.gif中。 使用技術:Vu...
摘要:實現多圖上傳主要用到以下兩個屬性是自帶多圖上傳的,但是細心的朋友可能發現默認多圖的實現可能和我們預期有些出入,有截圖可以看出,實質是進行多次請求在上傳事件觸發后,多圖上傳的默認實現調用了三次請求。 前言 工作中碰到需要多圖上傳,在使用element-ui解決過程中碰到一些問題,在這里分享給大家。 環境: Springboot+Vue+Element-ui 正文 這次上傳使用的是Elem...
摘要:前言本期的主題是在中如何實現文件上傳。文件上傳解決方案目前比較主流的解決方案就是表單或者和表單來實現。文件上傳解決方案表單利用表單組件進行文件上傳是遠古時期就一直在用的方法而且還真經久不衰,厲害了。 終于抽出時間來繼續更新自己的博客,最近忙得夠嗆...對于該系列博客不知道大家有沒有這樣的看法,對于React常見的基礎東西并沒有過多或者詳細列出,感覺有點不符合系列標題。的確,筆者一開始也...
摘要:網上很多文件切片上傳的文章看了很多最終自己總結了下主要思路如下需要實現的功能前端多文件上傳前端文件切片并命名文件同步上傳切片同步上傳后端接受切片并根據文件名稱保存至文件夾后端判斷是否是最后一個切片合并切片用到的技術文件切片切片上傳請求參數 網上很多文件切片上傳的文章, 看了很多, 最終自己總結了下, 主要思路如下: 1. 需要實現的功能 前端多文件上傳 前端文件切片, 并命名uuid...
閱讀 1540·2023-04-26 00:20
閱讀 1130·2023-04-25 21:49
閱讀 808·2021-09-22 15:52
閱讀 583·2021-09-07 10:16
閱讀 976·2021-08-18 10:22
閱讀 2671·2019-08-30 14:07
閱讀 2243·2019-08-30 14:00
閱讀 2658·2019-08-30 13:00