formdata.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * Emulate FormData for some browsers
  3. * MIT License
  4. * (c) 2010 François de Metz
  5. */
  6. ;(function (w) {
  7. if (w.FakeFormData) return
  8. function FormData() {
  9. this.fake = true
  10. this.boundary = '--------FormData' + Math.random()
  11. this._fields = []
  12. }
  13. FormData.prototype.append = function (key, value) {
  14. this._fields.push([key, value])
  15. }
  16. FormData.prototype.toString = function () {
  17. var boundary = this.boundary
  18. var body = ''
  19. this._fields.forEach(function (field) {
  20. body += '--' + boundary + '\r\n'
  21. // file upload
  22. if (field[1] && field[1].name) {
  23. var file = field[1]
  24. body +=
  25. 'Content-Disposition: form-data; name="' +
  26. field[0] +
  27. '"; filename="' +
  28. file.name +
  29. '"\r\n'
  30. body += 'Content-Type: ' + file.type + '\r\n\r\n'
  31. body += file.getAsBinary() + '\r\n'
  32. } else {
  33. body +=
  34. 'Content-Disposition: form-data; name="' + field[0] + '";\r\n\r\n'
  35. if (field !== 0 && !!field[1]) body += field[1]
  36. body += '\r\n'
  37. }
  38. })
  39. body += '--' + boundary + '--'
  40. return body
  41. }
  42. w.FakeFormData = FormData
  43. })(window)