не удается получить доступ к файлу на сервере, хотя я выставил с помощью express - PullRequest
0 голосов
/ 23 января 2020

В моем проекте мне нужно динамически хранить некоторые текстовые файлы, и конечный пользователь должен иметь возможность загружать их из браузера. Я знаю, что лучший способ - использовать хранилище объектов, такое как MINIO или S3, но, к сожалению, единственный способ использовать хранилище памяти. Итак, я пытаюсь сделать следующее: я создал папку publi c и открыл ее, используя следующий код:

var express = require('express');
var app = express();

//setting middleware
app.use(express.static( 'public')); //Serves resources from public folder


var server = app.listen(5000);

это так просто. Затем для тестирования, чтобы убедиться, что я могу загрузить и найти файл, я создал папку publi c с файлом t.txt, и при попытке:

http://localhost:5000/public/t.txt

я получаю

enter image description here

Так почему я не получаю это? И то, что я пытаюсь достичь, будет хорошим совпадением со сценарием и выполнимо ли это вообще?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Сначала используйте следующую строку кода:

app.use(express.static(__dirname+'/public')); 

Это означает, что ваш домашний каталог для страниц stati c HTML находится в папке publi c. Обратите внимание, что «__dirname» указывает на каталог текущего файла js.

После этого вызовите следующий URL-адрес из браузера или POSTMAN:

http://localhost:5000/t.txt

Как вы можете видеть , нет необходимости писать http://localhost:5000/public/t.txt со ссылкой на папку "publi c", поскольку вы уже указали это в строке app.use.

1 голос
/ 23 января 2020

Когда вы не указываете путь в app.use(), ваше приложение будет обслуживать содержимое каталога, на который вы указываете в express.static() по пути root. Попробуйте это:

http://localhost:5000/t.txt

Тем не менее, если вы хотите, чтобы он был доступен в /public/t.txt, просто укажите путь:

app.use('/public', express.static('public'))
...