【问题标题】:Custom HTTPRequestHandler for public file upload用于公共文件上传的自定义 HTTPRequestHandler
【发布时间】:2017-01-17 13:32:52
【问题描述】:

我正在尝试将公共文件上传服务的 HTTPRequestHandler 添加到 wakanda 服务器。任何人都应该能够在不登录的情况下将文件发布到该服务。不幸的是,我在对 HTTPRequestHandler 发出的所有 POST 请求上都收到“403 Forbidden”错误? GET 请求工作正常,但在这种情况下没有多大帮助;-)

目的是接收文件,对其进行处理,然后将其发送回客户端。

添加我的请求处理程序如下:

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

任何有关如何解决此问题的帮助将不胜感激。

【问题讨论】:

标签: wakanda


【解决方案1】:

终于让它自己使用 cURL。我的 Postman 设置似乎有问题。

cURL 命令:

curl --form "fileupload=@test.xml" 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;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多