2016-03-09 4 views
0

Я создаю портал, на котором пользователи могут выбирать и загружать отдельные файлы со своего ПК на S3 на AWS.Загрузка файлов на S3 с помощью node.js

Ниже мой server.js код:

app.post ('/ submit_doc', функция (Req, Рез) {

var FileName = req.body.fileName, 
Filedescription = req.body.filediscrip, 
InputFileName = req.body.inputfile; 
AWS.config.region = 'eu-west-1'; 
var fileStream = fs.createReadStream(FileName); 
fileStream.on('error', function (err) { 
    if (err){ 
     console.log("Error reading file: ", err); 
     res.send(500); 
    } 
    else{ 
     fileStream.on('open', function() { 
      var s3 = new AWS.S3(); 
      s3.putObject({ 
       Bucket: 'exampleassetcare.com', 
       Key: 'reports/'+FileName, 
       Body: fileStream 
      }, function (err) { 
      if (err) { 
       console.log("Error uploading data: ", err); 
       res.send(500); 
      } 
     }); 
    }); 

Я получаю сообщение об ошибке: Нет такого файла или каталога.

Может кто-то пожалуйста, помогите?

ответ

0

изменить его

var FileName = req.body.fileName, 
Filedescription = req.body.filediscrip, 
InputFileName = req.body.inputfile; 
AWS.config.region = 'eu-west-1'; 
console.log(FileName) 
var fileStream = fs.createReadStream(FileName); 

и убедитесь, что ваш файл существует, похоже, что-то не так с файлом пути.

+0

FileName отображается правильно. Как упоминалось pyepye, я пытаюсь загрузить локальный файл на S3. Таким образом, сервер должен получить доступ к локальному пути к файлу. – NLV

1

Если я правильно понимаю вас, этот код, который вы опубликовали, запущен на сервере . Но входные данные предоставляются клиентом , да? Если это так, ваш сервер будет пытаться найти файл локально, основываясь на пути к файлу, который клиент дал вам ... Таким образом, файл не будет существовать ...

Если я был злонамеренным пользователем, и я сказал ваш сервер, чтобы загрузить путь к файлу /etc/passwd, ваш сервер пойдет и выведет хешированные пароли (предполагая, что это была система Linux, и предполагая наличие соответствующих разрешений и т. д.) Но вы поняли эту идею).

+0

Да, код находится на сервере, а входы - от клиента. Как обрабатывать эту загрузку? – NLV

+0

Вы используете Express? Если да, взгляните на http://stackoverflow.com/questions/23114374/file-uploading-with-express-4-0-req-files-undefined. Короче говоря, вам нужна форма HTML на стороне клиента, которая будет передавать данные POST на сервер. В этих данных содержится содержимое файла, которое ваш сервер может либо локально загружать, либо загружать на S3, либо, наоборот, просто передавать непосредственно на S3. Имеют смысл? – pyepye

+0

Да, это полезно. Мне нужно установить некоторые middlewares для обработки загрузки файла с клиента (HTML с методом POST) на S3 (Nodejs on Express). – NLV

Смежные вопросы