Working with forms
Form handling is a critical aspect of web applications. The Aurelia Fetch Client provides comprehensive support for various form submission methods, file uploads, and advanced form processing scenarios.
Form Data Submission
Basic Form Submission with FormData
import { IHttpClient } from '@aurelia/fetch-client';
import { resolve } from '@aurelia/kernel';
export class FormService {
private http = resolve(IHttpClient);
async submitForm(formElement: HTMLFormElement): Promise<any> {
const formData = new FormData(formElement);
try {
const response = await this.http.post('/api/forms/submit', {
body: formData
});
if (!response.ok) {
throw new Error(`Form submission failed: ${response.statusText}`);
}
return await response.json();
} catch (error) {
console.error('Form submission error:', error);
throw error;
}
}
async submitFormData(data: Record<string, any>): Promise<any> {
const formData = new FormData();
// Add form fields
Object.entries(data).forEach(([key, value]) => {
if (value !== null && value !== undefined) {
if (value instanceof File || value instanceof Blob) {
formData.append(key, value);
} else if (Array.isArray(value)) {
value.forEach(item => formData.append(`${key}[]`, item));
} else {
formData.append(key, String(value));
}
}
});
const response = await this.http.post('/api/forms/data', {
body: formData
});
if (!response.ok) {
throw new Error(`Form submission failed: ${response.statusText}`);
}
return await response.json();
}
}URL-Encoded Form Submission
For traditional form submissions that don't involve file uploads:
File Upload Operations
Single File Upload
Multiple File Upload
Upload with Progress Tracking
Advanced Form Handling
Form Validation Integration
Dynamic Form Building
File Upload with AbortController
Form Data Processing
Complex Data Structures
Best Practices
File Type and Size Validation
Error Handling and Recovery
Memory Management
Always clean up object URLs and large FormData objects when done:
The Aurelia Fetch Client provides a robust foundation for handling all types of form submissions and file uploads. By following these patterns, you can build reliable, user-friendly form handling in your applications.
Last updated
Was this helpful?