1

I am uploading a picture to the Express.js (3.0.0) server using ajax Valum's qq uploader (https://github.com/valums/file-uploader). It works under all popular browsers but Safari. The following error occurs:

TypeError: Cannot read property 'length' of undefined at promote (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js:15:18) at parse (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js:53:58) at parse (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js:50:7) at merge (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js:68:5) at String.split.reduce.base (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js:111:14) at Array.reduce (native) at parseString (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js:101:6) at Object.exports.parse (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js:127:7) at IncomingMessage.module.exports (/home/andrew/projects/dreamshare-git/src/main/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:66:18) at IncomingMessage.EventEmitter.emit (events.js:90:17)

Can you please advise any solution? Thank you!

Andrew Luzkovky
  • 251
  • 3
  • 10

1 Answers1

0

OK we sorted it after digging into express.js internals. The problem was the old version of file uploader didn't set type for uploaded file and Safari set it to default plain post so express.js incorrectly process it as plain post query. The solution was to update upload library. Therein the following line correctly sets the content type:

xhr.setRequestHeader("Content-Type", file.type);
Andrew Luzkovky
  • 251
  • 3
  • 10