Удалить загруженный файл с сервера Heroku - PullRequest
1 голос
/ 28 июня 2019

Я создал проект, в который я могу загружать файлы, например Dropbox, развернутый в Heroku, и он работает нормально, но теперь я хочу удалить файл с сервера Heroku.

Я удаляю путь из БДс отношением, но я много чего пытался удалить файл с сервера, но безуспешно, последний через fs.unlink(), он, кажется, лучше всего использовать:

//working example
const file = {url: 'https://mobox-app.herokuapp.com/files/dbd3917046ec3075f2a424e07c9a39aa-1*hoSDm9oecgsKShbAroI2XQ.jpeg'} 

async deleteFile(req, res){

        const file = await File.findById(req.body.fileId),
              fileId = req.body.fileId       

        await File.deleteOne( {_id: fileId}).then(

            fs.unlink(file.url, (err) => {

                if (err) {

                  console.error(err)

                  return

                }

            })

        )
}

Это то, что героку регистрируетдайте мне:

2019-06-28T16:01:43.514606+00:00 app[web.1]: { [Error: ENOENT: no such file or directory, unlink 'https://mobox-app.herokuapp.com/files/dbd3917046ec3075f2a424e07c9a39aa-1*hoSDm9oecgsKShbAroI2XQ.jpeg']

2019-06-28T16:01:43.514645+00:00 app[web.1]:   errno: -2,

2019-06-28T16:01:43.514648+00:00 app[web.1]:   code: 'ENOENT',

2019-06-28T16:01:43.514650+00:00 app[web.1]:   syscall: 'unlink',

2019-06-28T16:01:43.514652+00:00 app[web.1]:   path:

2019-06-28T16:01:43.514654+00:00 app[web.1]:    'https://mobox-app.herokuapp.com/files/dbd3917046ec3075f2a424e07c9a39aa-1*hoSDm9oecgsKShbAroI2XQ.jpeg' }

Он не может найти путь, то же самое, если я поставлю только '/files/fileName.ext' или только 'fileName.ext' как file.url.Как я могу удалить эти файлы?

1 Ответ

2 голосов
/ 28 июня 2019

Я создал проект, который позволяет загружать файлы, например Dropbox, развернутый в Heroku, и он работает нормально, но теперь я хочу удалить файл с сервера Heroku.

Возможно, вы захотите поближе взглянуть и подумать о том, что означает «работает нормально».

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

Heroku рекомендует хранить пользовательские загрузки на стороннем сервисе, таком как Amazon S3.Вам придется перейти на что-то подобное, чтобы часть хранилища работала правильно, а когда вы захотите удалить файл, вам придется использовать любые инструменты, которые предоставляет выбранная вами служба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...