Я использую Nodejs readStream.pipe (writeStream).Как я могу получить полный путь к файлу, который я загружаю, и назначить его для createReadStream.Я получаю только имя файла, и когда файл находится в корневом каталоге nodejs, ничего страшного нет, но когда я загружаюсь из любого другого места, я получаю ошибку:
events.js:183
throw er; // Unhandled 'error' event
^
Error: ENOENT: no such file or directory, open 'C:\Users\Esen\Documents\GitHub\gbmsturbo\nike.png'
Я знаю, что это происходит, потому что nike.png, что язагружаю не в "C: \ Users \ Esen \ Documents \ GitHub \ gbmsturbo \".Он находится внутри этой папки: "C: \ Users \ Esen \ Documents \ GitHub \ filestoupload"
Я попытался
function throwErrorDontCrash() {
process.on('uncaughtException', function (err) {
console.error(err.message)
})
}
, и это предотвращает сбой nodejs и загружает файл, но с пустым содержимым(0 байт)
router.post('/upload', (req, res) => {
var filePath = req.body.file
var ext = path.extname(filePath)
var filename = path.basename(filePath, ext)
var newVerFilePath = "public/uploads/" + newVerFileName+ext
const readStream = fs.createReadStream(filePath)
throwErrorDontCrash()
const writeStream = fs.createWriteStream(newVerFilePath)
readStream.pipe(writeStream)
function throwErrorDontCrash() {
process.on('uncaughtException', function (err) {
//console.error(err.message)
})
}
и вот мой файл формы
<form class="center" action="/upload" method="post">
<input id="file" type="file" name="file" required encrypt="multipart/form-data"/>
<input type="submit" value="UPLOAD">
Я хочу, чтобы filePath включал путь к каталогу, куда бы ни загружался файл, когда пользователь нажимает кнопку Выбрать или Обзор,В настоящее время filePath получает только имя файла, такое как nike.png, и я ожидаю получить «C: /Users/Esen/Documents/GitHub/filestoupload/nike.png»