2017-03-06 15 views
1

Angular 2とSails Jsサーバーから複数のファイルをアップロードしようとしています。私はSailJs Appのパブリックフォルダの中にファイルを置いておきたい。ファイルアップロードAngular 2&Sails Js

ファイルはイベントからファイルを取得することによってAngular 2 Appからアップロードされます。次のように単一ファイルアップロードのためのコードは次のとおりです。

角度2サービス:

fileChange(event: any): Promise<string> { 
    let fileList: FileList = event.target.files; 
    if(fileList.length > 0) { 
     let file: File = fileList[0]; 
     let formData:FormData = new FormData(); 
     formData.append('myFile', file, file.name); 
     let headers = new Headers(); 
     let cToken = this.cookie.getCookie("token"); 
     headers.append('Authorization', 'Bearer ' + cToken); 
     headers.append('Content-Type', undefined); 

     //headers.append('Content-Type', 'multipart/form-data'); 

     headers.append('Accept', 'application/json'); 
     let options: RequestOptionsArgs = { headers: headers, withCredentials: true } 
     return new Promise((resolve, reject) => { 
      this.http.post(this.apiEndpoint + "project/reffile/add/all", formData, options).toPromise() 
      .then(response => { 
       // The promise is resolved once the HTTP call is successful. 
       let jsonData = response.json(); 
       if (jsonData.apiStatus == 1) { 
        resolve(jsonData); 
       } 
       else reject(jsonData.message); 
      }) 
      // The promise is rejected if there is an error with the HTTP call. 
      // if we don't get any answers the proxy/api will probably be down 
      .catch(reason => reject(reason.statusText)); 
     }); 
    } 
} 

SailsJs方法:

/** 
    * `FileController.upload()` 
    * 
    * Upload file(s) to the server's disk. 
    */ 
    addAll: function (req, res) { 

    // e.g. 
    // 0 => infinite 
    // 240000 => 4 minutes (240,000 miliseconds) 
    // etc. 
    // 
    // Node defaults to 2 minutes. 
    res.setTimeout(0); 

    console.log("req.param('filename')"); 
    console.log(req.param('filename')); 
    req.file('myFile') 
    .upload({ 

     // You can apply a file upload limit (in bytes) 
     maxBytes: 1000000 

    }, function whenDone(err, uploadedFiles) { 
     if (err) return res.serverError(err); 
     else return res.json({ 
     files: uploadedFiles, 
     textParams: req.allParams() 
     }); 
    }); 
    }, 

フォームを掲示した後、私もHTTPコール応答にファイルを取得していませんconsole.log(req.param('filename'));にできません。

ここで間違っていることを教えてください。私はまた、ヘッダーを変更/削除しようとしましたが、まだ動作していません。

いくつかの専門家は、HTTPは、現在、ファイルをアップロードできません、このためのネイティブXHR要求を使用する必要があります。 - あなたが指定したアップロードディレクトリにファイル名を追加することができ

req.file('file').upload({ 
     dirname: '../../assets/uploads' 
    },function (err, files) { 
     if (err) return res.serverError(err); 
     var fileNameArray = files[0].fd.split("/"); 
     var fileName = fileNameArray[fileNameArray.length - 1]; 
     console.log("fileName: ",fileName); 
    }); 

アップロードされたファイルにアクセスするには、次のファイルアップロードのためのディレクトリを指定してみThierry Templierの答えhere

答えて

0

をご覧ください。ファイルにアクセスできます

関連する問題