{"_id":"@as626040875/uploadmiddleware","_rev":"3-ec7e438878f98e891fe16d6676c98863","name":"@as626040875/uploadmiddleware","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@as626040875/uploadmiddleware","version":"0.1.0","description":"一个TypeScript版本的express上传下载中间件, 可直接作为基础中间件直接引入","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","pretest":"tsc","test":" mocha ./dist/test/**/*.test.js"},"repository":{"type":"git","url":"git+https://github.com/SJcz/uploadMiddleware.git"},"author":{"name":"SJcz"},"license":"","bugs":{"url":"https://github.com/SJcz/uploadMiddleware/issues"},"homepage":"https://github.com/SJcz/uploadMiddleware#readme","dependencies":{"express":"^4.17.1","express-async-errors":"^3.1.1","fs-extra":"^10.0.0","lodash":"^4.17.21","mime":"^2.5.2","multer":"^1.4.2"},"devDependencies":{"@types/express":"^4.17.12","@types/fs-extra":"^9.0.11","@types/lodash":"^4.14.171","@types/mocha":"^8.2.3","@types/multer":"^1.4.6","@types/node":"^15.12.5","@types/node-fetch":"^2.5.11","@types/request":"^2.48.6","@types/should":"^13.0.0","form-data":"^4.0.0","mocha":"^9.0.2","node-fetch":"^2.6.1","request":"^2.88.2","should":"^13.2.3"},"gitHead":"353796b166d912935b182af3562ec6115516fe58","_id":"@as626040875/uploadmiddleware@0.1.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-uvMZC8upE0XUrggHZesnREjN7mrWy/OyzIjg95UuuNXmf0djSQ5m+QEEGwsoz7MnANPIQJUJZO7/rvGD50jWHQ==","shasum":"705e1e88e49913b13e55f5088dc6792ccc3264cb","tarball":"https://registry.npmjs.org/@as626040875/uploadmiddleware/-/uploadmiddleware-0.1.0.tgz","fileCount":12,"unpackedSize":30319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7ouFCRA9TVsSAnZWagAAuHUP/0wdxIPPnJsPLAfVa4pS\n2UyzYLarZ9ERO7PC5/s8Q7I4LvgjatmUnAWqAcD2Dbh9gZ6om6A6p2HRuu7T\nnM2URZ5z1r9YCHTcWw54YNWWxVgyRrAVekWugzhvdloZtGNJYefoiTGHk9pz\n/2NIg5fciCKC4VlGbsyan1KvbAqA1xLvrYG8lxWAukul/6t75ARYdwYcqDto\naM9YNDIfKBBWwnJYAghc4irnO8s2MS7qbQIoenu2cjGX9WljdOGMItsz5Ipq\nUsyhrZeWpX/aNhTDWMFySR2Ag9UCO3/2rNHVUWyAoTexD2nvz2+tv1JNO6Yr\nHb0+YDsYlQNK4W8LIVSoYFHDFkQN64zfPkQGoyF3peaf3ucxGnaKamfCEM1H\nIsAsmHHuo4XQE3nXMhmaHh3gBTHbkMj6xtwrrn8GzZGVilKa0sL4p3EnKDET\nDxBiFW45P+XSgWoTz9BCdNn7DTpEMqQtlRM5zq4D16Noop/zwSsxiq4UK1Xj\n13LfZV2111lzJv6PFh0CePwzQsBvgjOSOFboerzqxz7lKNzW9TLNEAoHElYx\n7SX2JuwMR9UzLsQEWr+Di4p8TVQmY803oRPPkdqoMJyMbCBAmXfQJRcYeDQE\nnWgZBj66yx/hDZFiKyeZgUHYkoUMg2bkI+GQEq55s9vcY/pWl+YBvySuDkXr\nJ5xf\r\n=h07I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0IA61NEtDM+t1OceIOIrLgLEexOYLFVEsELQ1Qxz5tAiBw4V2a7QjswXq4xzy4k+gGHGbtrdaTQ8TYuVZu1H8ZjA=="}]},"_npmUser":{"name":"as626040875","email":"626040875@qq.com"},"directories":{},"maintainers":[{"name":"as626040875","email":"626040875@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uploadmiddleware_0.1.0_1626246021461_0.49871934273033003"},"_hasShrinkwrap":false},"0.1.1":{"name":"@as626040875/uploadmiddleware","version":"0.1.1","description":"一个TypeScript版本的express上传下载中间件, 可直接作为基础中间件直接引入","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","pretest":"tsc","test":" mocha ./dist/test/**/*.test.js"},"repository":{"type":"git","url":"git+https://github.com/SJcz/uploadMiddleware.git"},"author":{"name":"SJcz"},"license":"","bugs":{"url":"https://github.com/SJcz/uploadMiddleware/issues"},"homepage":"https://github.com/SJcz/uploadMiddleware#readme","dependencies":{"express":"^4.17.1","express-async-errors":"^3.1.1","fs-extra":"^10.0.0","lodash":"^4.17.21","mime":"^2.5.2","multer":"^1.4.2"},"devDependencies":{"@types/express":"^4.17.12","@types/fs-extra":"^9.0.11","@types/lodash":"^4.14.171","@types/mocha":"^8.2.3","@types/multer":"^1.4.6","@types/node":"^15.12.5","@types/node-fetch":"^2.5.11","@types/request":"^2.48.6","@types/should":"^13.0.0","form-data":"^4.0.0","mocha":"^9.0.2","node-fetch":"^2.6.1","request":"^2.88.2","should":"^13.2.3"},"gitHead":"74c4355e226044812d5583a1b25ae84c73cc472a","_id":"@as626040875/uploadmiddleware@0.1.1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-QdHrMpG5q9b5nxItxYMkNqfv2fgLtbD8IuTIk5BzkBbBRKkjoSgZJ214rNnAd5TzmjGd688njgnA7Ssl/mjobA==","shasum":"fb612d907c454b7970e57d294c2d17eb6066ebbd","tarball":"https://registry.npmjs.org/@as626040875/uploadmiddleware/-/uploadmiddleware-0.1.1.tgz","fileCount":22,"unpackedSize":65686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7q5wCRA9TVsSAnZWagAAdhgP/1K4aScMKzMBp1bl9fn2\nAphGcRgtqEnwo4Y9NyNyBHluZUPgQbTfJmGCL9RaiZF7zRnOYa5CzIJGwGpk\nvCJc2vvhkZLtcq8qY8j7c6L1bI6pGMZSpVpHtpiipeuysPzyh6Ng88RBU64W\nNvG61rYad75iWB8+BaBjMA7PFJIFzF2QuZrma+XGuP7E2Gbwg02CmPIOt/oU\nv5CyzLEGI80JODaXPaHu61rTTn+Xm5x41QUFGz9P/9cZZSZCSGG8QXsUTx+H\n59aKJiQ22jtVYNTtxNoT0KdkvtHN9PyAb0hbMgtBUQzCwofBCkYgqdpYacRI\ncrCH/MiPrKncNDVIh48KntaToynhhS3dr2balXW4Zp/jE4zcoilW6N8ALlm4\n1yRFbRur89JPEIBKVYOEQlqc58RJwhWGKBT8ixQIy01u66yBwcqMZxeYxzEz\n1+vwwKOgN8qRXBgQHW6+uv+NssnsrpSsqaJciqSc7BcprCQ6q/eGPSeid0sI\nzWFLAg1dRq27gFs7v/hNzB4GMuqbC2cFxtQctch8UY4HZ8CXjFK4db8YYJqS\ndZ3Ym6nYIS/08ukf/gcjNFfyOkBq9qct0hQ6YsWPX/pxvlMRnJNI+BUhLvvL\n1+jW0a6JhtlB74r+JB/GZjWRXClvlPyFo2Z++CpLqtE6+QNYp/mcjJawePoe\nvABV\r\n=18C/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDXa4BcQOl2ZK3g95fqZxay+VsPs6VKI4MFxK/6+gwbAiBVmvkIYKBT6h9lPfOE8R/g4ppzeTEqg5O1pElx3bBQiA=="}]},"_npmUser":{"name":"as626040875","email":"626040875@qq.com"},"directories":{},"maintainers":[{"name":"as626040875","email":"626040875@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uploadmiddleware_0.1.1_1626254960369_0.7941222124309206"},"_hasShrinkwrap":false},"0.1.2":{"name":"@as626040875/uploadmiddleware","version":"0.1.2","description":"一个TypeScript版本的express上传下载中间件, 可直接作为基础中间件直接引入","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","pretest":"tsc","test":" mocha ./dist/test/**/*.test.js"},"repository":{"type":"git","url":"git+https://github.com/SJcz/uploadMiddleware.git"},"author":{"name":"SJcz"},"license":"","bugs":{"url":"https://github.com/SJcz/uploadMiddleware/issues"},"homepage":"https://github.com/SJcz/uploadMiddleware#readme","dependencies":{"express":"^4.17.1","express-async-errors":"^3.1.1","fs-extra":"^10.0.0","lodash":"^4.17.21","mime":"^2.5.2","multer":"^1.4.2"},"devDependencies":{"@types/express":"^4.17.12","@types/fs-extra":"^9.0.11","@types/lodash":"^4.14.171","@types/mocha":"^8.2.3","@types/multer":"^1.4.6","@types/node":"^15.12.5","@types/node-fetch":"^2.5.11","@types/request":"^2.48.6","@types/should":"^13.0.0","form-data":"^4.0.0","mocha":"^9.0.2","node-fetch":"^2.6.1","request":"^2.88.2","should":"^13.2.3"},"gitHead":"7757b65ca36704648d599a43ab9a6a6e18d363ac","_id":"@as626040875/uploadmiddleware@0.1.2","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-AxZ4+etizceEzfml9FO3EzSKZkcl15N52lKvtk/4MyHE7ttFaYqzegAVLV/PRbZCSnFaps73nPszt+Dub6G72Q==","shasum":"2019031c253c83dd478c079eeb72f0283b0cc123","tarball":"https://registry.npmjs.org/@as626040875/uploadmiddleware/-/uploadmiddleware-0.1.2.tgz","fileCount":2,"unpackedSize":5311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg76/VCRA9TVsSAnZWagAAGJsP/2raszP2JmhSCVf3ai9h\n2AshC8vPQM+1Fqo6BYlDqrXjJeCnilmBvAJvOdBbGfFg3Nk7JARCP3RQgJSO\nQ+f+yKkYWvGWv9HTsbeW76cPOb0BE5LsVGeUb8ippTjAeXLCFyufiKmGaINZ\n7F3/I4HIsgDshvgV7+asM9yZYPSe7Pkxjkw5giw6se5MAdkocILzrqw+k02U\nTA4KC9Pdh3q7C4Gw1KWEZA/D2hiprPu5z1s/Y7Vima45961d8c3uYlyg3G5h\n5ZUBG2fE2Yi3ld0ITmxDnaRNdMEmT+FI0arxKkO6LjwdNAZ6c+8dssbor//6\ntlTqPQJ44s5gPI7KhR0R3FftTuwts+4N9uFXMRk2jV/LW752MunSBv5Lkhk9\nVnGmnv0iRSFD97HVZ+8nYP99zJ+H6m7kWhIYNJXz9BHxHJYTidkIj9vUANAN\nZmWk0OGbBtag+xc9fTi30ovsEl6i3JhjeWyG+R92yfWF9RU8WM6uTFCuS7BP\nJ4FfQZfCixPvZNmgOxWU5PpHNnNBvK+5r557Kh8xFL4hyp9FqHcM6PTNVwHy\ngbq7yPyOPe/o98pfux1QjC/04jQYeL5Au2jmKztezgWZ2JALefd5GVikA+Dn\nsC69tr8mL2SeLj+zHGhev+MqVdpllqHDFHMuL5/n8BC4wcUtDso6+2P9WpPP\n1TN7\r\n=kvtA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxDaPwKgfnDmzDq6z/ikXRR2yGzitjk4iW3DIU+YertwIhAOuCQwtMAf0QKvyLEFODHerk3IE/KE20giZZnp5l+n0Q"}]},"_npmUser":{"name":"as626040875","email":"626040875@qq.com"},"directories":{},"maintainers":[{"name":"as626040875","email":"626040875@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uploadmiddleware_0.1.2_1626320852568_0.3724340450495274"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-14T07:00:21.383Z","0.1.0":"2021-07-14T07:00:21.579Z","modified":"2022-04-04T15:42:14.181Z","0.1.1":"2021-07-14T09:29:20.476Z","0.1.2":"2021-07-15T03:47:32.694Z"},"maintainers":[{"name":"as626040875","email":"626040875@qq.com"}],"description":"一个TypeScript版本的express上传下载中间件, 可直接作为基础中间件直接引入","homepage":"https://github.com/SJcz/uploadMiddleware#readme","repository":{"type":"git","url":"git+https://github.com/SJcz/uploadMiddleware.git"},"author":{"name":"SJcz"},"bugs":{"url":"https://github.com/SJcz/uploadMiddleware/issues"},"readme":"# uploadMiddleware\r\n\r\n## 介绍\r\n一个TypeScript版本的express上传下载中间件, 可作为基础中间件直接引入\r\n\r\n\r\n## 使用\r\n```javascript\r\nconst express = require('express')\r\nconst uploadMiddleware =  require('@as626040875/uploadmiddleware');\r\n\r\nconst app = express();\r\napp.use((req, res, next) => {\r\n    console.log(req.url);\r\n    next();\r\n})\r\nuploadmiddleware(app, {\r\n    routes: { // 中间件提供的五个路由\r\n        review: '/v1/file/review/:fileId', // 文件预览\r\n        info: '/v1/file/:fileId', // 查看文件信息\r\n        download: '/v1/file/download/:fileId', // 直接下载文件\r\n        upload: '/v1/file/upload', // 上传文件\r\n        delete: '/v1/file/:fileId' // 删除文件\r\n    },\r\n    fileRootPath: '', // 文件上传时的基础存储目录, 默认是 process.cwd()\r\n    downloadsLimit: 10, // 同时下载的数量限制\r\n    needOauthMD5: false // 文件上传是否需要验证 md5\r\n});\r\napp.listen(process.env.express_port || 8080, () => {\r\n    console.log(`server is running ${process.env.express_port || 8080}`);\r\n});\r\n```\r\n\r\n## 安装\r\n#### 使用 npm\r\n使用如下命令安装 uploadmiddleware  \r\n```\r\nnpm i @as626040875/uploadmiddleware --save \r\n```\r\n\r\n### 直接下载编译\r\n从 github 上直接下来代码, 编译之后引用即可.\r\n\r\n\r\n## 路由\r\n该中间件被引入时, 默认会自动注册五个路由\r\n|  路由名   | 说明  |  请求方法 | 请求参数  |\r\n|  ----  | ----  | ----  | ----  |\r\n| /v1/file/review/:fileId  | 预览文件, 可直接在浏览器打开, 当文件是未知类型或者 application/octet-stream 时, 会自动下载文件 | get | fileId: 文件唯一id |\r\n| /v1/file/:fileId  | 获取文件信息 | get | fileId: 文件唯一id |\r\n| /v1/file/download/:fileId  | 下载文件, 不同于预览文件, 下载文件就是单纯的下载, 不提供网页打开功能 | get | fileId: 文件唯一id |\r\n| /v1/file/upload  | 上传文件, 目前仅支持单文件上传 | post | filename: 可选, 上传之后保存的文件名<br>file: 必选, 上传的文件<br>md5: 可选, 文件的MD5 |\r\n| /v1/file/:fileId  | 删除已经上传的文件 | delete | fileId: 文件唯一id |\r\n\r\n\r\n\r\n## options\r\n使用该中间件时, 可以通过 options 选项自定义部分内容\r\noptions 选项默认是\r\n```javascript\r\nexport const OPTIONS: IHandlerOptions = {\r\n    routes: {  // 中间件提供的五个路由\r\n        review: '/v1/file/review/:fileId', // 文件预览\r\n        info: '/v1/file/:fileId', // 查看文件信息\r\n        download: '/v1/file/download/:fileId',  // 直接下载文件\r\n        upload: '/v1/file/upload',  // 上传文件\r\n        delete: '/v1/file/:fileId' // 删除文件\r\n    },\r\n    fileRootPath: '',  // 文件上传时的基础存储目录, 默认是 process.cwd()\r\n    downloadsLimit: 10,  // 同时下载的数量限制\r\n    needOauthMD5: false // 文件上传是否需要验证 md5\r\n}\r\n```\r\n**更改路由接口时, 路由参数不可变更.**\r\n\r\n|  options 选项   | 说明  |\r\n|  ----  | ----  |\r\n|  fileRootPath   | 文件上传时的基础存储路径, 默认是 process.cwd() / files  |\r\n|  downloadsLimit   |  同时下载文件的请求限制, 通过 IP 限制, 默认是10个 |\r\n|  needOauthMD5   | 开启时, 上传文件接口需要传入 md5 参数, 关闭时可不传  |\r\n\r\n\r\n\r\n## 文件存储基础目录\r\n使用 K8S 部署使用了该中间件的服务时, fileRootPath 需要被设置成 volume, 这样即便存在多个服务, 也可以访问到同一文件\r\n\r\n\r\n\r\n## 文件类型\r\n文件类型使用 mime 模块判断, 遇到 a.b | filea 等这种无法识别类型的文件时, 默认会下载.\r\n\r\n\r\n\r\n## 错误处理\r\n因为中间件都是使用 es6 的 async/await 语法, 没有捕获 promise reject 错误, 所以普通情况下, 中间件报错时, 因为 next 不执行, 整个请求会堵塞, 所以使用了 express-async-errors 模块来处理promise错误.\r\n\r\n## 测试\r\n进入文件目录, 使用如下命令跑单元测试\r\n```\r\nnpm test \r\n```\r\n\r\n","readmeFilename":"README.md"}