2017-01-17 10 views
2

パブリックファイルアップロードサービス用のHTTPRequestHandlerをwakandaサーバーに追加しようとしています。誰もがログインせずにこのサービスにファイルをPOSTできるはずです。残念ながら、HTTPRequestHandlerに対して行われたすべてのPOSTリクエストで「403 Forbidden」エラーが発生しますか? GET要求はうまく動作しますが、この場合多くは役に立ちません;パブリックファイルアップロード用のカスタムHTTPRequestHandler

ファイルを受け取り、処理してクライアントに送り返すことを意図しています。次のように

は、私の要求ハンドラを追加しました:

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

この問題を解決する方法上の任意のヘルプははるかに高く評価されるだろう。

+0

問題は、ファイルアップロードの権限に関連するかもしれないが、私は、このサービスはパブリックであるために何をしたい場合は? http://doc.wakanda.org/home2.en.html#/Wakanda Studio/0.Beta/File-Upload.300-939929.en.html – Stefan

答えて

4

最後に、cURLで自分自身を動作させました。私の郵便配達のセットアップにいくつか問題があるように見えます。

のcURLコマンド:

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; 
 
    } 
 
}

関連する問題