Загрузка файлов между серверами - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть система, которая состоит из системы управления делами + базы данных в качестве бэкэнда и веб-приложения, выполняющего роль внешнего интерфейса.Внутренние приложения размещаются на сервере под управлением Windows Server 2012 R2 и IIS.Внешний интерфейс представляет собой приложение nodejs, использующее инфраструктуру SailsJS, которая была развернута на виртуальной машине Ubuntu.

Внешний интерфейс использует Formidable для загрузки документа на сервер.Контроллер, который обрабатывает это выглядит следующим образом:

DocumentController.js

uploadDocument: function (req, res) {
    let params = [];
    let jobId, documentRename, documentType, documentPath;
    let form = new formidable.IncomingForm();

    // store all uploads in the /uploads directory
    form.uploadDir = '\\\\backend-server\\E$\\Program Files\\Output\\Batch Holding Area\\';

    // every time a file has been uploaded successfully,
    // rename it to it's orignal name
    form.on('file', function(name, file) {
        //rename the incoming file to the file's name
        documentPath = form.uploadDir + file.name;
        fs.rename(file.path, form.uploadDir + file.name);
    });

    form.on('field', function (key, field) {
        //console.log('Got a field:', field);
        //console.log('Got a field name:', name);
        params.push([key, field]);
    });

    // log any errors that occur
    form.on('error', function(err) {
        return res.serverError(err);
    });

    // once all the files have been uploaded, send a response to the client
    form.on('end', function() {

        //*** Does something here with the parameters ***
        let jobVars = { 'foo' : 'bar'};
        let jobId = "ABCD";

        return DocumentService.uploadFileVars(req.session.sessionId, jobId, jobVars).then(function (response) {
            return res.send("Document uploaded.");
        }).catch(function (err) {
            return res.serverError(err);
        });
    });
    form.parse(req);
}

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

Я могу запустить это приложение в моей среде разработки.Эта функция работает, как ожидается, и помещает файл на сервер и завершает оставшуюся часть функции.Проблема возникает, когда это развернуто в коробку Ubuntu.Когда он запускается, он генерирует необработанную ошибку, которая убивает паруса.Ответ в браузере просто net::ERROR_CONNECTION_RESET.

Это несколько выходит за рамки моих навыков, поэтому я не совсем уверен, как отладить эту проблему.Я подозреваю, что проблема здесь связана с форматом пути к файлу, но я также подумал, что это может быть проблемой CORS, но тогда это сработало бы с моей локальной машины?

...