Пользовательский HTTPRequestHandler для загрузки общедоступных файлов

Я пытаюсь добавить HTTPRequestHandler для общедоступной службы загрузки файлов на сервер ваканды. Любой должен иметь возможность отправить файл в эту службу без входа в систему. К сожалению, я получаю ошибку «403 Forbidden» во всех запросах POST, сделанных в HTTPRequestHandler? GET-запросы работают нормально, но в этом случае мало помогают ;-)

Цель состоит в том, чтобы получить файл, обработать его и отправить обратно клиенту.

Добавил мой обработчик запросов следующим образом:

application.addHttpRequestHandler('^/fileUpload$', './backend/httpRequestHandler/file-upload.js', 'fileUpload');

Любая помощь в решении этой проблемы будет высоко оценена.


person Stefan    schedule 17.01.2017    source источник
comment
Проблема может быть связана с разрешениями на загрузку файлов, но что, если я хочу, чтобы эта служба была общедоступной? Студия doc.wakanda.org/home2.en.html#/Wakanda /0.Beta/File-Upload.300-939929.en.html   -  person Stefan    schedule 17.01.2017


Ответы (1)


Наконец-то заставил себя работать с cURL. Похоже, возникла проблема с настройкой Postman.

URL-команда:

curl --form "[email protected]" http://localhost:8081/fileUpload

HTTPRequestHandler:

/**
 * file upload handler
 * @param request {HTTPRequest} http request
 * @param response {HTTPResponse} http response
 */
function fileUpload(request, response) {
  try {
    var counter = 1;
    var nameTemp;
    var files = [];
    var uploadFolder = Folder('/PROJECT/database/data/tmp/');

    var result = [];
    var newName;
    var myBinaryStream;

    // create upload folder if not existing
    if (!uploadFolder.exists) {
      uploadFolder.create();
    }
    // create file instances
    for (var i = 0; i < request.parts.length; i++) {
      files.push(new File(uploadFolder.path + request.parts[i].fileName.replace(/\s/g, '_')));
      // create result object
      result[i] = {};
      result[i].name = request.parts[i].fileName;
      result[i].type = request.parts[i].mediaType;
      result[i].size = request.parts[i].size;
    }
    // write file content
    for (var i = 0; i < files.length; i++) {
      counter = 1;
      if (!files[i].exists) {
        myBinaryStream = BinaryStream(files[i], 'Write');
        myBinaryStream.putBlob(request.parts[i].asBlob);
        myBinaryStream.close();
      } else {
        while (files[i].exists) {
          nameTemp = files[i].name.replace(/\s/g, '_');
          files[i] = new File(uploadFolder.path + files[i].nameNoExt.replace(/\s/g, '_') + counter + '.' + files[i].extension);
          newName = files[i].name;
          if (files[i].exists) {
            files[i] = new File(uploadFolder.path + nameTemp);
          }
          counter++;
        }
        myBinaryStream = BinaryStream(files[i], 'Write');
        myBinaryStream.putBlob(request.parts[i].asBlob);
        myBinaryStream.close();
        result[i].name = newName;
      }
    }
    result = JSON.stringify(result);

    // add response header
    response.contentType = 'application/json';

    return result;
  } catch (e) {
    console.log(e.stack);
    return e;
  }
}

person Stefan    schedule 18.01.2017