角度2でng2-file-uploadを使用しています。ファイルアップロードアクションでフォームデータを送信する方法はありますか?角度2でng2ファイルをアップロードして投稿データを送信する方法は?
答えて
これは私がng2-file-uploadを使用して同じ問題を抱えていますませ答え、しかしです。彼らはonBeforeUploadItem
と呼ばれるフックを持っています。私は以下を試した。
ngOnInit() {
this.uploader.onBeforeUploadItem = (fileItem: any) => {
fileItem.formData.push({ someField: this.someValue });
fileItem.formData.push({ someField2: this.someValue2 });
};
}
私がfileItem.formData
の内容をログアウトすると、すべての値がそこにあります。しかし、これらのフォーム要素はサーバーに戻ってこないようです。私はChrome
を使用しています.HTTPポストを見ると、次のようになります。
リクエストヘッダ
POST /api/upload/csv HTTP/1.1 Host: localhost:8080 Connection: keep-alive Content-Length: 228 Origin: http://localhost:4200 x-access-token: eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJyb290IiwiYWRkciI6IjA6MDowOjA6MDowOjA6MSIsInNjaGVtZSI6Imh0dHAiLCJwb3J0IjoiODA4MCIsImlhdCI6MTQ2OTUwMzM1NX0.jICVQdZD-6m705sZsaQJ5-51LztdIx9pAAKgVYgL3HRMMgrJh6ldFbYvUVtA_UQkSrvCrNJeWeo4C7QYe2W4Cw User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryCSUTihSBrgmwjxg1 Accept: */* Referer: http://localhost:4200/main Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.8 Cookie: _ga=GA1.1.941072201.1467616449; token=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJyb290IiwiYWRkciI6IjA6MDowOjA6MDowOjA6MSIsInNjaGVtZSI6Imh0dHAiLCJwb3J0IjoiODA4MCIsImlhdCI6MTQ2OTUwMzM1NX0.jICVQdZD-6m705sZsaQJ5-51LztdIx9pAAKgVYgL3HRMMgrJh6ldFbYvUVtA_UQkSrvCrNJeWeo4C7QYe2W4Cw
要求ペイロード
------WebKitFormBoundaryCSUTihSBrgmwjxg1 Content-Disposition: form-data; name="file"; filename="data.csv" Content-Type: text/csv ------WebKitFormBoundaryCSUTihSBrgmwjxg1--
何が起こっているの任意のアイデア?ファイルをアップロードするときに、そのファイルで追加のフォーム値を送信する必要があります。
私はかなり近かった。ソリューションはonBuildItemForm
を無効にすることでした。
ngOnInit() {
this.uploader.onBuildItemForm = (fileItem: any, form: any) => {
form.append('someField': this.someValue);
form.append('someField2': this.someValue2);
};
}
インスタンスform
型FormDataです。私のHTTPポストを見ると、私のフォームフィールドの値がサーバーに送られているのがわかり、私のサーバーは実際に値を見ています。それがあなたを助けることを願っています。
このように投稿すると、someFieldをマルチフォームデータとして投稿していますそれはreq.bodyと一緒です。値を取得するには、multerのような別のパッケージを使用しなければなりません。そして、それはreq.bodyとして 'someField'を添付します。 – VtoCorleone
@ JaneWayneあなたが複数のファイルを作成し、それらのすべてに異なる情報を添付したい場合、これがどのように機能するかご存知ですか? – Androidicus
はちょうど何人かの人々をトリップかもしれないディテールを追加: form.append方法は次のとおりです。 'form.append(「キー」、値);' *コロン、名前&値の間にカンマ分離をない注意してください。 – jacobedawson
this.uploader.onBeforeUploadItem = (item: FileItem) => {
item.withCredentials = false;
this.uploader.authToken = 'Bearer ' + this.boxTokenResponse.userToken;
this.uploader.options.additionalParameter = {
name: item.file.name,
parent_id: this.parentFolderId
};
};
これは、file-uploader.class.jsがフォームデータをパンする方法です。サーバー内のデータにアクセスするためのよう
if (!this.options.disableMultipart) {
sendable = new FormData();
this._onBuildItemForm(item, sendable);
sendable.append(item.alias, item._file, item.file.name);
if (this.options.additionalParameter !== undefined) {
Object.keys(this.options.additionalParameter).forEach(function (key) {
sendable.append(key, _this.options.additionalParameter[key]);
});
}
}
それは魅力のように動作します!友よありがとう! –
サーバーサイドで追加値が渡された場合、そのアクセス方法は? – Hitesh
一般に、サーバー側では、http要求のヘッダーオブジェクトにアクセスし、特定のヘッダーキーと値の一覧を探す必要があります。 –
、それはMulter
を使用して行うことができます。
const multer = require('multer');
let DIR = './uploads/';
let upload = multer({dest: DIR}).single('givenitemAlias');
router.post('/upload', function (req, res, next) {
console.log(req.body);//empty object
upload(req, res, function (err) {
if (err) {
// An error occurred when uploading
return res.status(422).send("an Error occured")
}
// No error occured.
console.log(req.body);//modified req.body with out key value pairs
console.log(req.file);//metadata of the file
return res.send("Upload Completed for "+temppathOfUploadedFile);
});
});
- 1. 角度サービス(角2)のhttp投稿要求でパラメータを送信する方法
- 2. 角度2で投稿を送信するときのエラー
- 3. データの送信方法角度2でサーバーにデータを送信する
- 4. 角度2の投稿データを読む
- 5. 角度のあるファイルをアップロードするカスタムhttpの投稿ファイル
- 6. 角度2を使用してHTTPサービスでデータを送信する方法
- 7. 角度2は、asp.net mvcコントローラにデータを投稿する
- 8. スクラムスパイダーのstart_urlsで投稿データを送信する方法
- 9. 投稿フォームの入力値を投稿角度2にする
- 10. 投稿方法でヘッダを送信
- 11. アップロードする画像を含む角度2のフォームを投稿するには
- 12. Jsonデータ+ FormDataで角度2+送信リクエスト
- 13. 生の投稿データを送信する
- 14. 大きなファイルを送信してPythonでリクエストを投稿する方法
- 15. djangoでajax投稿要求を使用してファイルを送信する方法
- 16. 角度のあるhttp投稿がヘッダーを送信していない
- 17. 投稿とJWSでJSONデータを送信
- 18. フォームを送信して投稿を削除する方法
- 19. 角度2を使ってサービスを投稿するには?
- 20. 角度2 - ng2 - dragula
- 21. javascript投稿方法を使用してデータをPHPファイルに送信する方法
- 22. 投稿リクエストでファイル+パラメータを送信
- 23. 角度2のhttp投稿要求でフォームデータを送信するにはどうすればよいですか?
- 24. 投稿ボットンなしで$ _POSTコンテンツを送信する方法
- 25. 送信ボタンなしで投稿要求を送信する方法
- 26. Django getで送信された投稿のデータを取得する方法は?
- 27. データベースにデータを投稿した後にPHPメールを送信する方法
- 28. 投稿投稿をサーバーに送信
- 29. PHPで投稿データを送信してリダイレクト
- 30. ASPのフォームなしで投稿データを送信するClassic/VBScript
あなたがやりたいと思っているまさにのより多くの詳細な説明をお願いできますか?私はそのパッケージを使って作業しています。私はあなたが達成しようとしていることを理解するのに苦労しています。 –
フォームビルダーを使用して1つのユーザーフォームを作成しています。ユーザーフォームには、ファーストネーム、ラストネーム、Eメール、profile_imag、ステータスなどのフィールドがあります。 1つのサーバー呼び出しを使用して、profile_imageデータですべてのユーザー入力データ(ファーストネーム、ラストネーム、電子メールなど)を投稿する方法。 私はバックエンドとしてlaravelを使用しています。 – Ghanshyam
例を見ると 'item.upload()'があり、 'item'に' item.formData'というプロパティがあります。フォームデータを 'item.formData = yourFormData'経由で取得します。私はこの方法でパッケージを使用していません。 –