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