Skip to content

Latest commit

History

78 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Multiparser

A Deno module for parsing multipart/form-data

tag

Features:

  • Very simple API
  • Upload options
  • Much faster than deno standard library

Documentation

Multiparser version 2 aims to have better performance than V1. Since V1 is dependent on deno@std entirely, which is very unstable. So Multiparser V2 has less dependencies, and it's much faster!

Usage

// multiParserimport{multiParser,Form,FormFile}from'https://deno.land/x/multiparser@<version>/mod.ts'constform=awaitmultiParser(request)

Where:

request: Request is a raw server request coming from Deno http module.

Result:

  • success, return Form
  • fail, return undefined

Form Definition:

interfaceForm{fields: Record<string,string>;files: Record<string,FormFile|FormFile[]>;}

Basic Example:

Suppose your form has two fields, the first one has field name singleStr with text "this is string value" only, and the second field called singleImg with a img file named "singleImg.png".

import{serve}from"https://deno.land/std@0.114.0/http/server.ts";import{multiParser}from'https://deno.land/x/multiparser@<version>/mod.ts'serve(async(req)=>{constparsed=awaitmultiParser(req)console.log(parsed);returnnewResponse(` <h3>Deno http module</h3> <form action="/upload" enctype="multipart/form-data" method="post"> <div>singleStr: <input type="text" name="singleStr" /></div> <div>singleImg: <input type="file" name="singleImg"/></div> <input type="submit" value="Upload" /> </form>`,{headers: {"Content-Type": "text/html; charset=utf-8"}})});

After you upload the form, the returned value would be like below:

form={fields: {<string>singleStr: "this is string value"},files: {singleFile: {<string>name: "singleFile",<string>filename: "singleImg.png",<string>contentType: "image/png",<number>size: 11837,<Uint8Array>content: [...]}}}

With Oak

import{Application,Context,NativeRequest}from"https://deno.land/x/oak@v10.5.0/mod.ts";import{multiParser}from'https://deno.land/x/multiparser@<version>/mod.ts'constapp=newApplication();app.use(async(ctx)=>{if(ctx.request.url.pathname==='/upload'){constform=awaitmultiParser((ctx.request.originalRequestasNativeRequest).request)if(form){console.log(form)}}ctx.response.headers.set("Content-Type","text/html; charset=utf-8")ctx.response.body=` <h3>Deno Oak framework</h3> <form action="/upload" enctype="multipart/form-data" method="post"> <div>Text field title: <input type="text" name="title" /></div> <div>File: <input type="file" name="singleFile"/></div> <input type="submit" value="Upload" /> </form> `});awaitapp.listen({port: 8000});

About

multipart/form-data parser for Deno servers

Resources

Stars

27 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages