Ошибка: ENOENT при переименовании файла в приложении node / express

Я пытаюсь загрузить файл в моем приложении node / express, и я получаю следующую ошибку:

{ [Error: ENOENT, rename '/tmp/64124a9886fdb03f1faee159bc533776']
  errno: 34,
  code: 'ENOENT',
  path: '/tmp/64124a9886fdb03f1faee159bc533776' }

/home/frankie/Projects/LP/routes/manager/deliverables.js:51
                            throw err;
                                  ^
Error: ENOENT, rename '/tmp/64124a9886fdb03f1faee159bc533776'

Вот соответствующий код из моего приложения:

if (req.files.file.name !== '' && req.files.file.size !== 0) {
    // this will move the uploaded file from the tmp folder to the uploads folder
    fs.rename(req.files.file.path, app.get('loc') +  "uploads/" + name + "-" + id + "/" + req.files.file.name, function (err) {
        if (err) throw err;

Когда я проверяю, что находится в / tmp, файл находится там:

fiega@fiega:/tmp$ ll
total 56
drwxrwxrwt 12 root    root    4096 Dec 12 11:33 ./
drwxr-xr-x 23 root    root    4096 Sep 27 22:54 ../
-rw-rw-r--  1 fiega   fiega    903 Dec 12 11:33 13a26570f87297fd7f61785ef7d8772b

Вот как я использую парсер для тела:

app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());

Есть идеи? Я попытался изменить разрешения всего моего приложения, но не кубик.

node.js,file-io,express,

8

Ответов: 2


13 принят

Вы проверили, какой путь назначения вы используете? (может быть, вы имеете в виду /a/b/c.txt...)

Как ни странно, когда это происходит (исходный файл существует и каталог назначения не), сообщение об ошибке вы получаете только указывает на исходный файл ... Поэтому проверьте, не проблема.

Помните, хотите ли вы переместить загруженный файл /a, и то, /aи другое /a/bуже должно существовать.

Кроме того, если вам нужно переместить файл в другой раздел, вам придется использовать что-то вроде этого или вы получите сообщение EXDEVоб ошибке.


1

Вероятно, это не поможет оригинальному плакату, но в случае, если кто-то еще столкнется с этой проблемой и обнаружит, что источник и получатель оба, похоже, существуют, все же сталкиваются с этой ошибкой, надеюсь, это поможет. Когда я столкнулся с этой проблемой, это точная проблема, которую я нашел - когда я проверил, присутствовал как исходный (полный путь к файлу), так и пункт назначения (каталог), но переименование выбрало ENOENT.

В моем случае решение заключалось в том, чтобы признать, что я использовал асинхронную версию функции создания каталога для создания целевого каталога. В результате во время попытки переименования целевой каталог еще не существовал, но как только я проверил его, он был завершен, и каталог был там. Исправлена ??проблема переключения на синхронную версию создания каталога.

Node.js, файл-ю, экспресс,
Похожие вопросы