AngularクライアントとSpringサーバーを使用してファイルを簡単にアップロードする方法はありますか?外部ライブラリなしでAngularを使用すると、最も簡単な解決策を見つける前に、さまざまな質問/回答を検索する必要がありました。 解決策の下で、StackOverflowの質問/回答スタイルを使用して、StackOverflowで見つかったいくつかの回答をまとめることができました。Angular 2とSpringのファイルアップロード
1
A
答えて
1
私が見つけた解決策。私がコードを取った答えをもう一度見つけるとすぐに、私はそのコードを参考にします。
ファイルupload.component.html
<input type="file"
(change)="fileChange($event)"
placeholder="Upload file"
accept=".pdf,.doc,.docx">
ファイルupload.component.ts
import { Component } from '@angular/core';
import { RequestOptions, Headers, Http } from '@angular/http';
import { Observable } from 'rxjs';
@Component({
selector: 'file-upload',
templateUrl: './file-upload.component.html'
})
export class FileUploadComponent {
apiEndPoint = "http://localhost:8080/mySpringApp/upload";
constructor(private http: Http) {
}
fileChange(event) {
let fileList: FileList = event.target.files;
if (fileList.length > 0) {
let file: File = fileList[0];
let formData: FormData = new FormData();
formData.append('uploadFile', file, file.name);
let headers = new Headers();
headers.append('Accept', 'application/json');
let options = new RequestOptions({ headers: headers });
this.http.post(`${this.apiEndPoint}`, formData, options)
.map(res => res.json())
.catch(error => Observable.throw(error))
.subscribe(
data => console.log('success'),
error => console.log(error)
)
}
}
}
スプリングコントローラ:
package unisvid.sessionManager.server.controller;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@CrossOrigin(origins = "*")
@RestController
public class FileUploadController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public void UploadFile(MultipartHttpServletRequest request) throws IOException {
Iterator<String> itr = request.getFileNames();
MultipartFile file = request.getFile(itr.next());
String fileName = file.getOriginalFilename();
File dir = new File("/Users/luigi/Documents/tmp/");
if (dir.isDirectory()) {
File serverFile = new File(dir, fileName);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(file.getBytes());
stream.close();
}
}
}
0
角度2+ prファイルをアップロードするのに適しています。
空のContent-Typeを残すために非常に重要です:
は、ここに私のソリューションです。 'Content-Type'を 'multipart/form-data'に設定すると、アップロードは機能しません!
upload.component.html
<input type="file" (change)="fileChange($event)" name="file" />
upload.component.ts
export class UploadComponent implements OnInit {
constructor(public http: Http) {}
fileChange(event): void {
const fileList: FileList = event.target.files;
if (fileList.length > 0) {
const file = fileList[0];
const formData = new FormData();
formData.append('file', file, file.name);
const headers = new Headers();
// It is very important to leave the Content-Type empty
// do not use headers.append('Content-Type', 'multipart/form-data');
headers.append('Authorization', 'Bearer ' + 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9....');
const options = new RequestOptions({headers: headers});
this.http.post('https://api.mysite.com/uploadfile', formData, options)
.map(res => res.json())
.catch(error => Observable.throw(error))
.subscribe(
data => console.log('success'),
error => console.log(error)
);
}
}
}
関連する問題
- 1. ファイルアップロードAngular 2&Sails Js
- 2. Angular JSファイルアップロードとLaravelバックエンド
- 3. Angular JS ngファイルアップロード
- 4. ASP.NET Core 2.0とAngular 4.3ファイルアップロードwith progress
- 5. Ngファイルアップロード - URL JAVA SPRING
- 6. エラー406とSpring MVCとBlueimp jQueryファイルアップロード
- 7. Angular 2のSpringセキュリティの設定
- 8. Spring 3.0のAjaxでのファイルアップロード
- 9. ファイルアップロードは角度ファイルアップロードとSpringでは動作しません
- 10. Spring MVC(Rest)のAngular 2 httpポスト
- 11. Struts 2のファイルアップロードはSpringブートでは機能しません
- 12. Spring(起動)+ Angular(2 | 4)認証オプション
- 13. Spring MVC - ファイルアップロード - Etat HTTP 500エラーメッセージ
- 14. FreemarkerとSpringとの角2
- 15. SpringブートとAngular 2 CLIを使用したGoogle OAuth2認証
- 16. オンライン・サーバでSpringフレームワークバックエンドとAngular 2フロントエンドアプリケーションをデプロイする方法は?
- 17. Angularのリンク関数とAngular 2のコンストラクタ
- 18. Spring 3でのファイルアップロードMVC - ヌルポインタ例外
- 19. ファイルアップロードのエラーがSpring起動時Rest API
- 20. Angular 2の@angularとは何ですか?
- 21. 角度2の同期ファイルアップロード
- 22. ファイルアップロードの角度2(変更)
- 23. 角度2 - ファイルアップロード - ファイルへのアクセス方法?
- 24. Spring 3とHibernate 4を使った複数のファイルアップロード
- 25. サーバーサイドページネーション[Spring MVC&Angular 4]
- 26. ObservableとAngular 2のngFor
- 27. チェックボックスのデータバインディングAngular 2とTypeScript
- 28. Angular 2とMySQLのコンセプト
- 29. Angular 2アプリケーションのSystemJSとWebpack
- 30. submitとAngular 2のngSubmit