FormData er en detaljeret introduktion og anvendelse https://developer.mozilla.org/zh ... ng_FormData_Objects
Metoderne og begivenhederne i FormData er allerede meget tydelige der, så jeg vil ikke spilde tid på dem her. Denne artikel forklarer hovedsageligt brugen af FormData-objekter og asynkrone filuploads.
FormData-objektet gør det muligt for os at organisere en samling af nøgle-værdi-par, der sendes ved hjælp af XMLHttpRequest-objektet. Den bruges primært til at sende formulardata, men kan anvendes uafhængigt af data overført via formularer.
1. Opret et FormData-objekt fra bunden
Du kan oprette dit eget FormData-objekt og derefter tilføje nøgle-værdi-par til objektet via append()-metoden, sådan her:
Bemærk: Både felterne "userfile" og "webmasterfile" indeholder filer. Nummeret, der tildeles feltet "accountnum", konverteres direkte til en streng af FormData.append()-metoden (feltets værdi kan være en blob, fil eller streng: hvis værdien hverken er en blob eller en fil, konverteres værdien til en streng). Dette eksempel opretter en FormData-instans med felterne "username", "accountnum", "userfile" og "webmasterfile", og bruger derefter XMLHttpRequest-objektets send()-metode til at sende formulardataene. Feltet "webmasterfile" er en blob. Et blob-objekt repræsenterer de rå data i et filobjekt. Men de data, som blobben repræsenterer, behøver ikke at være i javascript-originalformatet. Filgrænsefladen er baseret på blobs, arver blobfunktionalitet og udvider understøttelsen af brugerfilsystemer. For at bygge en blob kan Blob()-konstruktøren kaldes.
2. Få et FormData-objekt fra en HTML-formular
For at opnå et FormData-objekt, der indeholder eksisterende formulardata, skal du angive formularelementet, når du opretter FormData-objektet.
Som dette:
Du kan også tilføje yderligere data efter at have fået FormData-objektet, som dette:
Dette giver dig mulighed for at tilføje yderligere information før afsendelse, ikke nødvendigvis af brugerredigering.
3. Brug FormData-objektet til at sende filen
Du kan bruge FormData til at sende filer. Et <form>simpelt midtertal kan <input>indeholde et element:
Du kan derefter bruge følgende kode til at sende den:
Du kan også tilføje en fil eller blob direkte til FormData-objektet, sådan her:
Når append()-metoden bruges, kan en tredje parameter bruges til at sende filnavnet (sendt til serveren via Content-Disposition-headeren). Hvis den tredje parameter ikke er specificeret, eller denne parameter ikke understøttes, går den tredje parameter som standard til "blob".
Hvis du sætter de korrekte indstillinger, kan du også bruge det med jQuery:
|