title: req.files undefined after using express-fileupload
body: <p>I'm trying to upload code on my React website. The problem is I see my file being uploaded, but the server can't find it in the request. By the way, the google scholar api works and is unrelated to my problem, but I kept it in server.js just in case it's the problem.</p>
  
  <p>I've tried adding a form tag around my inputs. I've tried using multer instead. I've tried adding a content-type to headers in fetch. I have redirected output of my code into a log file and grepped for file.</p>
  
  <p><code>PrivateCode.js</code></p>
  
  <pre><code>import React, {Component} from 'react'
  import './PrivateCode.css'
  
  class PrivateCode extends Component {
    state = {
      file: null,
      isLoading: false
    }
  
    changeHandler = (e) =&gt; {
      this.setState({file: e.target.files[0]})
    }
  
    onClickHandler = (e) =&gt; {
      fetch('/upload', {
        method: 'POST',
        body: this.state.file
      }).then(
        response =&gt; response.json()
      ).catch(
        err =&gt; console.log(err)
      )
    }
  
    render() {
      return(
        &lt;div&gt;
          Private Code
          &lt;p className="description"&gt;
            Description: Search for files previously uploaded based on snippets of code.
          &lt;/p&gt;
          &lt;input
            type="file"
            name="code"
            id="fileinput"
            onChange={this.changeHandler}
          /&gt;
          &lt;button 
            type="button" 
            onClick={this.onClickHandler}
            className="submitButton"
          &gt;Upload&lt;/button&gt;
        &lt;/div&gt;
      )
    }
  }
  
  export default PrivateCode
  </code></pre>
  
  <p><code>server.js</code></p>
  
  <pre><code>var express = require('express')
  var cors = require('cors')
  var app = express()
  var scholar = require('google-scholar')
  var fileUpload = require('express-fileupload')
  const port = 5000
  
  app.use(cors())
  app.use(fileUpload())
  app.listen(port, () =&gt; {
    console.log("Server up!")
  })
  
  app.post('/upload', function(req, res) {
    console.log(req)
    if (!req.file) {
      console.log("Not found")
      res.send("File not found")
      return
    }
    var file = req.file
    console.log(file)
    res.send("File uploaded!")
  })
  
  app.get('/googlescholar_backend/:query', (req, res) =&gt; {
    var query = req.params.query
    scholar.search(
      query
    ).then(
      data =&gt; res.send(data)
    ).catch(
      err =&gt; console.log(err)
    )
  })
  </code></pre>
  
  <p>You will find that after uploading a file, a "Not found" message will appear with respect to server.js.</p>
  
  <p><code>server.log</code></p>
  
  <pre><code>Server up!
  IncomingMessage {
    _readableState: 
     ReadableState {
       objectMode: false,
       highWaterMark: 16384,
       buffer: BufferList { head: null, tail: null, length: 0 },
       length: 0,
       pipes: null,
       pipesCount: 0,
       flowing: null,
       ended: false,
       endEmitted: false,
       reading: false,
       sync: true,
       needReadable: false,
       emittedReadable: false,
       readableListening: false,
       resumeScheduled: false,
       destroyed: false,
       defaultEncoding: 'utf8',
       awaitDrain: 0,
       readingMore: true,
       decoder: null,
       encoding: null },
    readable: true,
    domain: null,
    _events: {},
    _eventsCount: 0,
    _maxListeners: undefined,
    socket: 
     Socket {
       connecting: false,
       _hadError: false,
       _handle: 
        TCP {
          reading: true,
          owner: [Circular],
          onread: [Function: onread],
          onconnection: null,
          writeQueueSize: 0,
          _consumed: true },
       _parent: null,
       _host: null,
       _readableState: 
        ReadableState {
          objectMode: false,
          highWaterMark: 16384,
          buffer: [Object],
          length: 0,
          pipes: null,
          pipesCount: 0,
          flowing: true,
          ended: false,
          endEmitted: false,
          reading: true,
          sync: false,
          needReadable: true,
          emittedReadable: false,
          readableListening: false,
          resumeScheduled: false,
          destroyed: false,
          defaultEncoding: 'utf8',
          awaitDrain: 0,
          readingMore: false,
          decoder: null,
          encoding: null },
       readable: true,
       domain: null,
       _events: 
        { end: [Array],
          finish: [Function: onSocketFinish],
          _socketEnd: [Function: onSocketEnd],
          drain: [Array],
          timeout: [Function: socketOnTimeout],
          data: [Function: bound socketOnData],
          error: [Function: socketOnError],
          close: [Array],
          resume: [Function: onSocketResume],
          pause: [Function: onSocketPause] },
       _eventsCount: 10,
       _maxListeners: undefined,
       _writableState: 
        WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: false,
          needDrain: false,
          ending: false,
          ended: false,
          finished: false,
          destroyed: false,
          decodeStrings: false,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: true,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          bufferedRequest: null,
          lastBufferedRequest: null,
          pendingcb: 0,
          prefinished: false,
          errorEmitted: false,
          bufferedRequestCount: 0,
          corkedRequestsFree: [Object] },
       writable: true,
       allowHalfOpen: true,
       _bytesDispatched: 0,
       _sockname: null,
       _pendingData: null,
       _pendingEncoding: '',
       server: 
        Server {
          domain: null,
          _events: [Object],
          _eventsCount: 2,
          _maxListeners: undefined,
          _connections: 1,
          _handle: [Object],
          _usingSlaves: false,
          _slaves: [],
          _unref: false,
          allowHalfOpen: true,
          pauseOnConnect: false,
          httpAllowHalfOpen: false,
          timeout: 120000,
          keepAliveTimeout: 5000,
          _pendingResponseData: 0,
          maxHeadersCount: null,
          _connectionKey: '6::::5000',
          [Symbol(asyncId)]: 5 },
       _server: 
        Server {
          domain: null,
          _events: [Object],
          _eventsCount: 2,
          _maxListeners: undefined,
          _connections: 1,
          _handle: [Object],
          _usingSlaves: false,
          _slaves: [],
          _unref: false,
          allowHalfOpen: true,
          pauseOnConnect: false,
          httpAllowHalfOpen: false,
          timeout: 120000,
          keepAliveTimeout: 5000,
          _pendingResponseData: 0,
          maxHeadersCount: null,
          _connectionKey: '6::::5000',
          [Symbol(asyncId)]: 5 },
       _idleTimeout: 120000,
       _idleNext: 
        TimersList {
          _idleNext: [Circular],
          _idlePrev: [Circular],
          _timer: [Object],
          _unrefed: true,
          msecs: 120000,
          nextTick: false },
       _idlePrev: 
        TimersList {
          _idleNext: [Circular],
          _idlePrev: [Circular],
          _timer: [Object],
          _unrefed: true,
          msecs: 120000,
          nextTick: false },
       _idleStart: 5015,
       _destroyed: false,
       parser: 
        HTTPParser {
          '0': [Function: parserOnHeaders],
          '1': [Function: parserOnHeadersComplete],
          '2': [Function: parserOnBody],
          '3': [Function: parserOnMessageComplete],
          '4': [Function: bound onParserExecute],
          _headers: [],
          _url: '',
          _consumed: true,
          socket: [Circular],
          incoming: [Circular],
          outgoing: null,
          maxHeaderPairs: 2000,
          onIncoming: [Function: bound parserOnIncoming] },
       on: [Function: socketOnWrap],
       _paused: false,
       read: [Function],
       _consuming: true,
       _httpMessage: 
        ServerResponse {
          domain: null,
          _events: [Object],
          _eventsCount: 1,
          _maxListeners: undefined,
          output: [],
          outputEncodings: [],
          outputCallbacks: [],
          outputSize: 0,
          writable: true,
          _last: false,
          upgrading: false,
          chunkedEncoding: false,
          shouldKeepAlive: false,
          useChunkedEncodingByDefault: true,
          sendDate: true,
          _removedConnection: false,
          _removedContLen: false,
          _removedTE: false,
          _contentLength: null,
          _hasBody: true,
          _trailer: '',
          finished: false,
          _headerSent: false,
          socket: [Circular],
          connection: [Circular],
          _header: null,
          _onPendingData: [Function: bound updateOutgoingData],
          _sent100: false,
          _expect_continue: false,
          req: [Circular],
          locals: {},
          [Symbol(outHeadersKey)]: [Object] },
       [Symbol(asyncId)]: 25,
       [Symbol(bytesRead)]: 0,
       [Symbol(asyncId)]: 26,
       [Symbol(triggerAsyncId)]: 25 },
    connection: 
     Socket {
       connecting: false,
       _hadError: false,
       _handle: 
        TCP {
          reading: true,
          owner: [Circular],
          onread: [Function: onread],
          onconnection: null,
          writeQueueSize: 0,
          _consumed: true },
       _parent: null,
       _host: null,
       _readableState: 
        ReadableState {
          objectMode: false,
          highWaterMark: 16384,
          buffer: [Object],
          length: 0,
          pipes: null,
          pipesCount: 0,
          flowing: true,
          ended: false,
          endEmitted: false,
          reading: true,
          sync: false,
          needReadable: true,
          emittedReadable: false,
          readableListening: false,
          resumeScheduled: false,
          destroyed: false,
          defaultEncoding: 'utf8',
          awaitDrain: 0,
          readingMore: false,
          decoder: null,
          encoding: null },
       readable: true,
       domain: null,
       _events: 
        { end: [Array],
          finish: [Function: onSocketFinish],
          _socketEnd: [Function: onSocketEnd],
          drain: [Array],
          timeout: [Function: socketOnTimeout],
          data: [Function: bound socketOnData],
          error: [Function: socketOnError],
          close: [Array],
          resume: [Function: onSocketResume],
          pause: [Function: onSocketPause] },
       _eventsCount: 10,
       _maxListeners: undefined,
       _writableState: 
        WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: false,
          needDrain: false,
          ending: false,
          ended: false,
          finished: false,
          destroyed: false,
          decodeStrings: false,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: true,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          bufferedRequest: null,
          lastBufferedRequest: null,
          pendingcb: 0,
          prefinished: false,
          errorEmitted: false,
          bufferedRequestCount: 0,
          corkedRequestsFree: [Object] },
       writable: true,
       allowHalfOpen: true,
       _bytesDispatched: 0,
       _sockname: null,
       _pendingData: null,
       _pendingEncoding: '',
       server: 
        Server {
          domain: null,
          _events: [Object],
          _eventsCount: 2,
          _maxListeners: undefined,
          _connections: 1,
          _handle: [Object],
          _usingSlaves: false,
          _slaves: [],
          _unref: false,
          allowHalfOpen: true,
          pauseOnConnect: false,
          httpAllowHalfOpen: false,
          timeout: 120000,
          keepAliveTimeout: 5000,
          _pendingResponseData: 0,
          maxHeadersCount: null,
          _connectionKey: '6::::5000',
          [Symbol(asyncId)]: 5 },
       _server: 
        Server {
          domain: null,
          _events: [Object],
          _eventsCount: 2,
          _maxListeners: undefined,
          _connections: 1,
          _handle: [Object],
          _usingSlaves: false,
          _slaves: [],
          _unref: false,
          allowHalfOpen: true,
          pauseOnConnect: false,
          httpAllowHalfOpen: false,
          timeout: 120000,
          keepAliveTimeout: 5000,
          _pendingResponseData: 0,
          maxHeadersCount: null,
          _connectionKey: '6::::5000',
          [Symbol(asyncId)]: 5 },
       _idleTimeout: 120000,
       _idleNext: 
        TimersList {
          _idleNext: [Circular],
          _idlePrev: [Circular],
          _timer: [Object],
          _unrefed: true,
          msecs: 120000,
          nextTick: false },
       _idlePrev: 
        TimersList {
          _idleNext: [Circular],
          _idlePrev: [Circular],
          _timer: [Object],
          _unrefed: true,
          msecs: 120000,
          nextTick: false },
       _idleStart: 5015,
       _destroyed: false,
       parser: 
        HTTPParser {
          '0': [Function: parserOnHeaders],
          '1': [Function: parserOnHeadersComplete],
          '2': [Function: parserOnBody],
          '3': [Function: parserOnMessageComplete],
          '4': [Function: bound onParserExecute],
          _headers: [],
          _url: '',
          _consumed: true,
          socket: [Circular],
          incoming: [Circular],
          outgoing: null,
          maxHeaderPairs: 2000,
          onIncoming: [Function: bound parserOnIncoming] },
       on: [Function: socketOnWrap],
       _paused: false,
       read: [Function],
       _consuming: true,
       _httpMessage: 
        ServerResponse {
          domain: null,
          _events: [Object],
          _eventsCount: 1,
          _maxListeners: undefined,
          output: [],
          outputEncodings: [],
          outputCallbacks: [],
          outputSize: 0,
          writable: true,
          _last: false,
          upgrading: false,
          chunkedEncoding: false,
          shouldKeepAlive: false,
          useChunkedEncodingByDefault: true,
          sendDate: true,
          _removedConnection: false,
          _removedContLen: false,
          _removedTE: false,
          _contentLength: null,
          _hasBody: true,
          _trailer: '',
          finished: false,
          _headerSent: false,
          socket: [Circular],
          connection: [Circular],
          _header: null,
          _onPendingData: [Function: bound updateOutgoingData],
          _sent100: false,
          _expect_continue: false,
          req: [Circular],
          locals: {},
          [Symbol(outHeadersKey)]: [Object] },
       [Symbol(asyncId)]: 25,
       [Symbol(bytesRead)]: 0,
       [Symbol(asyncId)]: 26,
       [Symbol(triggerAsyncId)]: 25 },
    httpVersionMajor: 1,
    httpVersionMinor: 1,
    httpVersion: '1.1',
    complete: false,
    headers: 
     { 'x-forwarded-host': 'localhost:3000',
       'x-forwarded-proto': 'http',
       'x-forwarded-port': '3000',
       'x-forwarded-for': '127.0.0.1',
       cookie: 'csrftoken=wKCVCYMHIlDtLeJLXzxOeZerTrQ3oR4LnhL9EUlK0j59TZ1SQ8MZ6LxlSaOKSl7g',
       connection: 'close',
       dnt: '1',
       'content-length': '985',
       origin: 'http://localhost:5000/',
       'content-type': 'text/plain',
       referer: 'http://localhost:3000/privatecode/?code=',
       'accept-encoding': 'gzip, deflate',
       'accept-language': 'en-US,en;q=0.5',
       accept: '*/*',
       'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
       host: 'localhost:5000' },
    rawHeaders: 
     [ 'x-forwarded-host',
       'localhost:3000',
       'x-forwarded-proto',
       'http',
       'x-forwarded-port',
       '3000',
       'x-forwarded-for',
       '127.0.0.1',
       'cookie',
       'csrftoken=wKCVCYMHIlDtLeJLXzxOeZerTrQ3oR4LnhL9EUlK0j59TZ1SQ8MZ6LxlSaOKSl7g',
       'connection',
       'close',
       'dnt',
       '1',
       'content-length',
       '985',
       'origin',
       'http://localhost:5000/',
       'content-type',
       'text/plain',
       'referer',
       'http://localhost:3000/privatecode/?code=',
       'accept-encoding',
       'gzip, deflate',
       'accept-language',
       'en-US,en;q=0.5',
       'accept',
       '*/*',
       'user-agent',
       'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
       'host',
       'localhost:5000' ],
    trailers: {},
    rawTrailers: [],
    upgrade: false,
    url: '/upload',
    method: 'POST',
    statusCode: null,
    statusMessage: null,
    client: 
     Socket {
       connecting: false,
       _hadError: false,
       _handle: 
        TCP {
          reading: true,
          owner: [Circular],
          onread: [Function: onread],
          onconnection: null,
          writeQueueSize: 0,
          _consumed: true },
       _parent: null,
       _host: null,
       _readableState: 
        ReadableState {
          objectMode: false,
          highWaterMark: 16384,
          buffer: [Object],
          length: 0,
          pipes: null,
          pipesCount: 0,
          flowing: true,
          ended: false,
          endEmitted: false,
          reading: true,
          sync: false,
          needReadable: true,
          emittedReadable: false,
          readableListening: false,
          resumeScheduled: false,
          destroyed: false,
          defaultEncoding: 'utf8',
          awaitDrain: 0,
          readingMore: false,
          decoder: null,
          encoding: null },
       readable: true,
       domain: null,
       _events: 
        { end: [Array],
          finish: [Function: onSocketFinish],
          _socketEnd: [Function: onSocketEnd],
          drain: [Array],
          timeout: [Function: socketOnTimeout],
          data: [Function: bound socketOnData],
          error: [Function: socketOnError],
          close: [Array],
          resume: [Function: onSocketResume],
          pause: [Function: onSocketPause] },
       _eventsCount: 10,
       _maxListeners: undefined,
       _writableState: 
        WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: false,
          needDrain: false,
          ending: false,
          ended: false,
          finished: false,
          destroyed: false,
          decodeStrings: false,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: true,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          bufferedRequest: null,
          lastBufferedRequest: null,
          pendingcb: 0,
          prefinished: false,
          errorEmitted: false,
          bufferedRequestCount: 0,
          corkedRequestsFree: [Object] },
       writable: true,
       allowHalfOpen: true,
       _bytesDispatched: 0,
       _sockname: null,
       _pendingData: null,
       _pendingEncoding: '',
       server: 
        Server {
          domain: null,
          _events: [Object],
          _eventsCount: 2,
          _maxListeners: undefined,
          _connections: 1,
          _handle: [Object],
          _usingSlaves: false,
          _slaves: [],
          _unref: false,
          allowHalfOpen: true,
          pauseOnConnect: false,
          httpAllowHalfOpen: false,
          timeout: 120000,
          keepAliveTimeout: 5000,
          _pendingResponseData: 0,
          maxHeadersCount: null,
          _connectionKey: '6::::5000',
          [Symbol(asyncId)]: 5 },
       _server: 
        Server {
          domain: null,
          _events: [Object],
          _eventsCount: 2,
          _maxListeners: undefined,
          _connections: 1,
          _handle: [Object],
          _usingSlaves: false,
          _slaves: [],
          _unref: false,
          allowHalfOpen: true,
          pauseOnConnect: false,
          httpAllowHalfOpen: false,
          timeout: 120000,
          keepAliveTimeout: 5000,
          _pendingResponseData: 0,
          maxHeadersCount: null,
          _connectionKey: '6::::5000',
          [Symbol(asyncId)]: 5 },
       _idleTimeout: 120000,
       _idleNext: 
        TimersList {
          _idleNext: [Circular],
          _idlePrev: [Circular],
          _timer: [Object],
          _unrefed: true,
          msecs: 120000,
          nextTick: false },
       _idlePrev: 
        TimersList {
          _idleNext: [Circular],
          _idlePrev: [Circular],
          _timer: [Object],
          _unrefed: true,
          msecs: 120000,
          nextTick: false },
       _idleStart: 5015,
       _destroyed: false,
       parser: 
        HTTPParser {
          '0': [Function: parserOnHeaders],
          '1': [Function: parserOnHeadersComplete],
          '2': [Function: parserOnBody],
          '3': [Function: parserOnMessageComplete],
          '4': [Function: bound onParserExecute],
          _headers: [],
          _url: '',
          _consumed: true,
          socket: [Circular],
          incoming: [Circular],
          outgoing: null,
          maxHeaderPairs: 2000,
          onIncoming: [Function: bound parserOnIncoming] },
       on: [Function: socketOnWrap],
       _paused: false,
       read: [Function],
       _consuming: true,
       _httpMessage: 
        ServerResponse {
          domain: null,
          _events: [Object],
          _eventsCount: 1,
          _maxListeners: undefined,
          output: [],
          outputEncodings: [],
          outputCallbacks: [],
          outputSize: 0,
          writable: true,
          _last: false,
          upgrading: false,
          chunkedEncoding: false,
          shouldKeepAlive: false,
          useChunkedEncodingByDefault: true,
          sendDate: true,
          _removedConnection: false,
          _removedContLen: false,
          _removedTE: false,
          _contentLength: null,
          _hasBody: true,
          _trailer: '',
          finished: false,
          _headerSent: false,
          socket: [Circular],
          connection: [Circular],
          _header: null,
          _onPendingData: [Function: bound updateOutgoingData],
          _sent100: false,
          _expect_continue: false,
          req: [Circular],
          locals: {},
          [Symbol(outHeadersKey)]: [Object] },
       [Symbol(asyncId)]: 25,
       [Symbol(bytesRead)]: 0,
       [Symbol(asyncId)]: 26,
       [Symbol(triggerAsyncId)]: 25 },
    _consuming: false,
    _dumped: false,
    next: [Function: next],
    baseUrl: '',
    originalUrl: '/upload',
    _parsedUrl: 
     Url {
       protocol: null,
       slashes: null,
       auth: null,
       host: null,
       port: null,
       hostname: null,
       hash: null,
       search: null,
       query: null,
       pathname: '/upload',
       path: '/upload',
       href: '/upload',
       _raw: '/upload' },
    params: {},
    query: {},
    res: 
     ServerResponse {
       domain: null,
       _events: { finish: [Function: bound resOnFinish] },
       _eventsCount: 1,
       _maxListeners: undefined,
       output: [],
       outputEncodings: [],
       outputCallbacks: [],
       outputSize: 0,
       writable: true,
       _last: false,
       upgrading: false,
       chunkedEncoding: false,
       shouldKeepAlive: false,
       useChunkedEncodingByDefault: true,
       sendDate: true,
       _removedConnection: false,
       _removedContLen: false,
       _removedTE: false,
       _contentLength: null,
       _hasBody: true,
       _trailer: '',
       finished: false,
       _headerSent: false,
       socket: 
        Socket {
          connecting: false,
          _hadError: false,
          _handle: [Object],
          _parent: null,
          _host: null,
          _readableState: [Object],
          readable: true,
          domain: null,
          _events: [Object],
          _eventsCount: 10,
          _maxListeners: undefined,
          _writableState: [Object],
          writable: true,
          allowHalfOpen: true,
          _bytesDispatched: 0,
          _sockname: null,
          _pendingData: null,
          _pendingEncoding: '',
          server: [Object],
          _server: [Object],
          _idleTimeout: 120000,
          _idleNext: [Object],
          _idlePrev: [Object],
          _idleStart: 5015,
          _destroyed: false,
          parser: [Object],
          on: [Function: socketOnWrap],
          _paused: false,
          read: [Function],
          _consuming: true,
          _httpMessage: [Circular],
          [Symbol(asyncId)]: 25,
          [Symbol(bytesRead)]: 0,
          [Symbol(asyncId)]: 26,
          [Symbol(triggerAsyncId)]: 25 },
       connection: 
        Socket {
          connecting: false,
          _hadError: false,
          _handle: [Object],
          _parent: null,
          _host: null,
          _readableState: [Object],
          readable: true,
          domain: null,
          _events: [Object],
          _eventsCount: 10,
          _maxListeners: undefined,
          _writableState: [Object],
          writable: true,
          allowHalfOpen: true,
          _bytesDispatched: 0,
          _sockname: null,
          _pendingData: null,
          _pendingEncoding: '',
          server: [Object],
          _server: [Object],
          _idleTimeout: 120000,
          _idleNext: [Object],
          _idlePrev: [Object],
          _idleStart: 5015,
          _destroyed: false,
          parser: [Object],
          on: [Function: socketOnWrap],
          _paused: false,
          read: [Function],
          _consuming: true,
          _httpMessage: [Circular],
          [Symbol(asyncId)]: 25,
          [Symbol(bytesRead)]: 0,
          [Symbol(asyncId)]: 26,
          [Symbol(triggerAsyncId)]: 25 },
       _header: null,
       _onPendingData: [Function: bound updateOutgoingData],
       _sent100: false,
       _expect_continue: false,
       req: [Circular],
       locals: {},
       [Symbol(outHeadersKey)]: 
        { 'x-powered-by': [Array],
          'access-control-allow-origin': [Array] } },
    route: Route { path: '/upload', stack: [ [Object] ], methods: { post: true } } }
  Not found
  </code></pre>
  
  <p>EDIT: I fixed this by surrounding a form tag around my input!</p>