Je ne peux pas transmettre de données à FormData. J'ai cherché. mais je ne pouvais pas comprendre. Pourriez-vous m'aider s'il vous plaît. Mon objectif; fichier image enregistrer en utilisant Web API 2. Je n'ai pas écrit plus wep api 2.
Je n'ai pas pu trouver de solution. y a-t-il une autre façon de l'utiliser?
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 {} >> il est vide de cette façon.
Pour envoyer image(avatar)
au serveur ou à l'API Web, vous pouvez utiliser FormData
et si vous souhaitez suivre cet objectif, veuillez procéder comme suit étape par étape:
Dans le fichier html, utilisez #avatar
pour accéder à ElementRef
dans le composant:
<form (ngSubmit)="onSubmit()">
<input type="file" accept=".png, .jpg, .jpeg" #avatar>
</form>
Créez component
et utilisez pour sending image
sur le serveur;
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) => {
}
);
}
}
Avis d’ajout de fichier à
FormData
comme ci-dessous, méthode avec paramètres
formData.append(name, fileValue, fileName)
J'ai transmis les données via FormData . Dans mon cas, j'ai utilisé formData.set (nom, valeurValeur, nomFichier) Au lieu de formData .append
(nom, valeurValue, nomFichier). s'il vous plaît voir le LIEN
HTML
<input type="file"
name="fileItem"
id="fileItem"
(change)="handleFileInput($event.target.files)"/>
2. Composant
handleFileInput(files: FileList) {
this.fileToUpload = files.item(0);
this.uploadFileToServer();
}
uploadFileToServer() {
this.fileUploadService.UploadFile(this.fileToUpload).subscribe(data => {
}, error => {
console.log(error);
});}
3. Service
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. Serveur
[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();
}}