FormDataにデータを渡すことができません。調べました。でも理解できませんでした。手伝っていただけませんか。私の目的; Web API2を使用して画像ファイルを保存します。これ以上wepapi2を作成していません。
解決策が見つかりませんでした。それを使用する他の方法はありますか?
myComponent
let fp = new fileUploadParametre();
let formData: FormData = new FormData();
var file;
if ($('#fileinput')[0] != undefined) {
if ($('#fileinput')[0].files.length > 0) {
file = $('#fileinput')[0].files[0];
formData.append('uploadingFile', file);
//fp.fileName = file.name;
console.log(formData);
}
formData.append('siparisid', this.siparis.siparisid);
formData.append('dokumantipi',this.form.controls.belgeTipiFormController.value);
formData.append('aciklama',this.form.controls.aciklamaFormController.value);
this.fileUploadService.kaydet(
formData
)
.subscribe(result => {
console.log(result);
if (result === true) {
this.errorMessages = [];
this.dialogRef.close(true)
}
else
this.errorMessages = ['Kayıt Yapılamadı'];
},
err => {
if (err.status == 0) {
this.errorMessages = ['Bağlantı hatası! sunucuya erişilemedi.'];
}
else if (err.status == 404) {
this.errorMessages = ['Bağlantı hatası! sunucuya erişilemedi.'];
}
else if (err.status == 401) {
this.errorMessages = ['Yetki Hatası.'];
}
else if (err.status == 400) {
let errBody = JSON.parse(err._body);
if (errBody
&& errBody['error'] == 'invalid_grant')
this.errorMessages = ['Oturum Açılamadı Geçersiz Kullanıcı veya Şifre'];
else
this.errorMessages = [errBody.message];
}
else
this.errorMessages = [err.statusTest]
}
);
}
**my Service**
public kaydet(
formData: FormData
): Observable<any> {
let postFiles = {
formData: formData
};
return this.http.post(
this.apiUrl + '/dokumanlar/ResimKaydet',
JSON.stringify(postFiles)
)
.map(res => res.json());
}
formData = formData {} >>このように空になります。
image(avatar)
をサーバーまたはWebAPIに送信するには、FormData
を使用できます。この目的を実行する場合は、次の作業を段階的に実行してください。
HTMLファイルでは、コンポーネントのElementRef
にアクセスするために_#avatar
_を使用します。
_<form (ngSubmit)="onSubmit()">
<input type="file" accept=".png, .jpg, .jpeg" #avatar>
</form>
_
component
を作成し、サーバーに対して_sending image
_を使用します。
_import {Component} from '@angular/core';
import {ElementRef} from '@angular/core';
import {ViewChild} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {HttpParams} from '@angular/common/http';
import {HttpHeaders} from '@angular/common/http';
@Component({
selector: 'app-avatar',
templateUrl: './avatar.component.html',
styleUrls: ['./avatar.component.css']
})
export class AvatarComponent {
@ViewChild('avatar') avatar: ElementRef;
constructor(private http: HttpClient) { }
onSubmit() {
const formData = new FormData();
formData.append('avatar',
this.avatar.nativeElement.files[0],
this.avatar.nativeElement.files[0].name);
const headers = new HttpHeaders();
headers.append('Content-Type', 'multipart/form-data');
headers.append('Accept', 'application/json');
this.http.post('api/upload', formData, {headers: headers})
.subscribe(
(response) => {
},
(error) => {
}
);
}
}
_
パラメータを使用して以下のメソッドのように
FormData
にファイルを追加することに注意してください
formData.append(name, fileValue, fileName)
私の場合、FormDataを介してデータを渡しました。formDataの代わりにformData。set(name、fileValue、fileName)を使用しました。append
(name、fileValue、fileName) [〜#〜] link [〜#〜] を参照してください
[〜#〜] html [〜#〜]
<input type="file"
name="fileItem"
id="fileItem"
(change)="handleFileInput($event.target.files)"/>
2。コンポーネント
handleFileInput(files: FileList) {
this.fileToUpload = files.item(0);
this.uploadFileToServer();
}
uploadFileToServer() {
this.fileUploadService.UploadFile(this.fileToUpload).subscribe(data => {
}, error => {
console.log(error);
});}
3。サービス
UploadFile(fileToUpload: File): Observable<boolean> {
const endpoint = 'api/image/upload';
var formData = new FormData();
formData.set('file', fileToUpload);
return this._http
.post(endpoint, formData)
.map(() => { return true; })
.catch((e) => this.handleError(e));}
4。サーバー
[Route("upload")]
public IHttpActionResult UploadImage()
{
try
{
var httpRequest = HttpContext.Current.Request;
foreach (string file in httpRequest.Files)
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
var postedFile = httpRequest.Files[file];
if (postedFile != null && postedFile.ContentLength > 0)
{
int MaxContentLength = 1024 * 1024 * 1; //Size = 1 MB
IList<string> AllowedFileExtensions = new List<string> { ".jpg", ".gif", ".png" };
var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.'));
var extension = ext.ToLower();
if (!AllowedFileExtensions.Contains(extension))
{
var message = string.Format("Please Upload image of type .jpg,.gif,.png.");
dict.Add("error", message);
return Ok();
}
else if (postedFile.ContentLength > MaxContentLength)
{
var message = string.Format("Please Upload a file upto 1 mb.");
dict.Add("error", message);
return Ok();
}
else
{
var filePath = HttpContext.Current.Server.MapPath("~/Userimage/" + postedFile.FileName + extension);
postedFile.SaveAs(filePath);
}
}
var message1 = string.Format("Image Updated Successfully.");
return Ok();
}
var res = string.Format("Please Upload a image.");
dict.Add("error", res);
return Ok();
}
catch (Exception ex)
{
var res = string.Format("some Message");
dict.Add("error", res);
return Ok();
}}