node.js - 错误:ENOENT:没有这样的文件或目录,打开 'F:\login\uploads\2019-05-12T18:23:38.048Z20190319_214122.jpg'
问题描述
Error in path in uploading image by multer.
I tried to give path dependency but that also problem didn't solved.
const express = require('express');
const mysql = require('promise-mysql');
const path = require('path')
const multer = require('multer')
const storage = multer.diskStorage({
destination: function(req, file, cb){
cb(null, '/uploads/')
},
filename: function(req, file, cb){
cb(null, new Date().toISOString() + file.originalname)
}
});
这给出错误-错误:ENOENT:没有这样的文件或目录,打开 'F:\login\uploads\2019-05-12T18:23:38.048Z20190319_214122.jpg'
解决方案
cb(null, new Date().toISOString() + file.originalname)
改成:
cb(null, new Date().toISOString().replace(/[\/\\:]/g, "_") + file.originalname)
Date.toISOString() 返回当前日期和时间,并包含字符':',在 Windows 文件系统中是禁止的。文件名也可能包含无法正确处理的路径分隔符。我添加了一个正则表达式,将字符 ':'、'\' 和 '/' 替换为字符 '_'。现在文件名变为有效。
推荐阅读
- ruby-on-rails - rails升级后soundcloud连接中的redirect_uri_mismatch
- django - 测试 Django url 'name' 是正确的 url
- google-app-engine - 使用App Engine golang柔性环境,测试时访问app.yaml
- c++ - 使用 EvtFormatMessage 获取默认字符串
- python - 比较给定列 2×2 值的最佳方法
- python - 从 SQLAlchemy、Flask 返回 JSON 对象,用于 3 个相关表
- python - 获取包含调用函数的脚本路径
- css - 如何在 Reactstrap 中更改背景颜色
- r - 从定义的列中减去每 4 列
- ios - Firebase iOS -Key/Value 对没有从数据库中物理删除