簡體   English   中英

文件上傳Angular 2&Sails Js

[英]File Upload Angular 2 & Sails Js

我試圖從Angular 2和Sails Js服務器上傳多個文件。 我想將文件放在SailJs App的公共文件夾中。

通過從觸發的事件中獲取文件,從Angular 2 App上載該文件。 單個文件上傳的代碼如下:

Angular 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請求。 在這里查看Thierry Templier的答案

嘗試指定文件上傳目錄:

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

要訪問上載的文件,您可以將fileName附加到您指定的上載目錄。 文件將可訪問

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM