uploader.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. module.exports =
  2. /** *** */ (function (modules) { // webpackBootstrap
  3. /** *** */ // The module cache
  4. /** *** */ const installedModules = {}
  5. /** *** */
  6. /** *** */ // The require function
  7. /** *** */ function __webpack_require__(moduleId) {
  8. /** *** */
  9. /** *** */ // Check if module is in cache
  10. /** *** */ if (installedModules[moduleId]) {
  11. /** *** */ return installedModules[moduleId].exports
  12. /** *** */ }
  13. /** *** */ // Create a new module (and put it into the cache)
  14. /** *** */ const module = installedModules[moduleId] = {
  15. /** *** */ i: moduleId,
  16. /** *** */ l: false,
  17. /** *** */ exports: {}
  18. /** *** */}
  19. /** *** */
  20. /** *** */ // Execute the module function
  21. /** *** */ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__)
  22. /** *** */
  23. /** *** */ // Flag the module as loaded
  24. /** *** */ module.l = true
  25. /** *** */
  26. /** *** */ // Return the exports of the module
  27. /** *** */ return module.exports
  28. /** *** */ }
  29. /** *** */
  30. /** *** */
  31. /** *** */ // expose the modules object (__webpack_modules__)
  32. /** *** */ __webpack_require__.m = modules
  33. /** *** */
  34. /** *** */ // expose the module cache
  35. /** *** */ __webpack_require__.c = installedModules
  36. /** *** */
  37. /** *** */ // define getter function for harmony exports
  38. /** *** */ __webpack_require__.d = function (exports, name, getter) {
  39. /** *** */ if (!__webpack_require__.o(exports, name)) {
  40. /** *** */ Object.defineProperty(exports, name, {enumerable: true, get: getter})
  41. /** *** */ }
  42. /** *** */ }
  43. /** *** */
  44. /** *** */ // define __esModule on exports
  45. /** *** */ __webpack_require__.r = function (exports) {
  46. /** *** */ if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  47. /** *** */ Object.defineProperty(exports, Symbol.toStringTag, {value: 'Module'})
  48. /** *** */ }
  49. /** *** */ Object.defineProperty(exports, '__esModule', {value: true})
  50. /** *** */ }
  51. /** *** */
  52. /** *** */ // create a fake namespace object
  53. /** *** */ // mode & 1: value is a module id, require it
  54. /** *** */ // mode & 2: merge all properties of value into the ns
  55. /** *** */ // mode & 4: return value when already ns object
  56. /** *** */ // mode & 8|1: behave like require
  57. /** *** */ __webpack_require__.t = function (value, mode) {
  58. /** *** */ if (mode & 1) value = __webpack_require__(value)
  59. /** *** */ if (mode & 8) return value
  60. /** *** */ if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value
  61. /** *** */ const ns = Object.create(null)
  62. /** *** */ __webpack_require__.r(ns)
  63. /** *** */ Object.defineProperty(ns, 'default', {enumerable: true, value})
  64. /** *** */ if (mode & 2 && typeof value !== 'string') for (const key in value) __webpack_require__.d(ns, key, function (key) { return value[key] }.bind(null, key))
  65. /** *** */ return ns
  66. /** *** */ }
  67. /** *** */
  68. /** *** */ // getDefaultExport function for compatibility with non-harmony modules
  69. /** *** */ __webpack_require__.n = function (module) {
  70. /** *** */ const getter = module && module.__esModule
  71. /** *** */ ? function getDefault() { return module.default }
  72. /** *** */ : function getModuleExports() { return module }
  73. /** *** */ __webpack_require__.d(getter, 'a', getter)
  74. /** *** */ return getter
  75. /** *** */ }
  76. /** *** */
  77. /** *** */ // Object.prototype.hasOwnProperty.call
  78. /** *** */ __webpack_require__.o = function (object, property) { return Object.prototype.hasOwnProperty.call(object, property) }
  79. /** *** */
  80. /** *** */ // __webpack_public_path__
  81. /** *** */ __webpack_require__.p = ''
  82. /** *** */
  83. /** *** */
  84. /** *** */ // Load entry module and return exports
  85. /** *** */ return __webpack_require__(__webpack_require__.s = 22)
  86. /** *** */ }({
  87. /***/ 22:
  88. /***/ (function (module, exports, __webpack_require__) {
  89. console.log(module, exports)
  90. Component({
  91. options: {
  92. addGlobalClass: true
  93. },
  94. properties: {
  95. title: {
  96. type: String,
  97. value: '图片上传'
  98. },
  99. sizeType: {
  100. type: Array,
  101. value: ['original', 'compressed']
  102. },
  103. sourceType: {
  104. type: Array,
  105. value: ['album', 'camera']
  106. },
  107. maxSize: {
  108. type: Number,
  109. value: 5 * 1024 * 1024
  110. },
  111. maxCount: {
  112. type: Number,
  113. value: 1
  114. },
  115. files: {
  116. type: Array,
  117. value: [],
  118. observer: function observer(newVal) {
  119. this.setData({
  120. currentFiles: newVal
  121. })
  122. }
  123. },
  124. select: {
  125. type: Function,
  126. value: function value() {}
  127. },
  128. upload: {
  129. type: Function,
  130. value: null
  131. },
  132. tips: {
  133. type: String,
  134. value: ''
  135. },
  136. extClass: {
  137. type: String,
  138. value: ''
  139. },
  140. showDelete: {
  141. type: Boolean,
  142. value: true
  143. }
  144. },
  145. data: {
  146. currentFiles: [],
  147. showPreview: false,
  148. previewImageUrls: []
  149. },
  150. ready: function ready() {},
  151. methods: {
  152. previewImage: function previewImage(e) {
  153. const index = e.currentTarget.dataset.index
  154. const previewImageUrls = []
  155. this.data.files.map(function (item) {
  156. previewImageUrls.push(item.url)
  157. })
  158. this.setData({
  159. previewImageUrls,
  160. previewCurrent: index,
  161. showPreview: true
  162. })
  163. },
  164. chooseImage: function chooseImage() {
  165. const _this = this
  166. if (this.uploading) return
  167. wx.chooseImage({
  168. count: this.data.maxCount - this.data.files.length,
  169. success: function success(res) {
  170. let invalidIndex = -1
  171. res.tempFiles.forEach(function (item, index) {
  172. if (item.size > _this.data.maxSize) {
  173. invalidIndex = index
  174. }
  175. })
  176. if (typeof _this.data.select === 'function') {
  177. const ret = _this.data.select(res)
  178. if (ret === false) {
  179. return
  180. }
  181. }
  182. if (invalidIndex >= 0) {
  183. _this.triggerEvent('fail', {
  184. type: 1, errMsg: 'chooseImage:fail size exceed ' + _this.data.maxSize, total: res.tempFilePaths.length, index: invalidIndex
  185. }, {})
  186. return
  187. }
  188. const mgr = wx.getFileSystemManager()
  189. const contents = res.tempFilePaths.map(function (item) {
  190. const fileContent = mgr.readFileSync(item)
  191. return fileContent
  192. })
  193. const obj = {tempFilePaths: res.tempFilePaths, tempFiles: res.tempFiles, contents}
  194. _this.triggerEvent('select', obj, {})
  195. const files = res.tempFilePaths.map(function (item, i) {
  196. return {loading: true, url: 'data:image/jpg;base64,' + wx.arrayBufferToBase64(contents[i])}
  197. })
  198. if (!files || !files.length) return
  199. if (typeof _this.data.upload === 'function') {
  200. const len = _this.data.files.length
  201. const newFiles = _this.data.files.concat(files)
  202. _this.setData({files: newFiles, currentFiles: newFiles})
  203. _this.loading = true
  204. _this.data.upload(obj).then(function (json) {
  205. _this.loading = false
  206. if (json.urls) {
  207. const oldFiles = _this.data.files
  208. json.urls.forEach(function (url, index) {
  209. oldFiles[len + index].url = url
  210. oldFiles[len + index].loading = false
  211. })
  212. _this.setData({files: oldFiles, currentFiles: newFiles})
  213. _this.triggerEvent('success', json, {})
  214. } else {
  215. _this.triggerEvent('fail', {type: 3, errMsg: 'upload file fail, urls not found'}, {})
  216. }
  217. }).catch(function (err) {
  218. _this.loading = false
  219. const oldFiles = _this.data.files
  220. res.tempFilePaths.map(function (item, index) {
  221. oldFiles[len + index].error = true
  222. oldFiles[len + index].loading = false
  223. })
  224. _this.setData({files: oldFiles, currentFiles: newFiles})
  225. _this.triggerEvent('fail', {type: 3, errMsg: 'upload file fail', error: err}, {})
  226. })
  227. }
  228. },
  229. fail: function fail(_fail) {
  230. if (_fail.errMsg.indexOf('chooseImage:fail cancel') >= 0) {
  231. _this.triggerEvent('cancel', {}, {})
  232. return
  233. }
  234. _fail.type = 2
  235. _this.triggerEvent('fail', _fail, {})
  236. }
  237. })
  238. },
  239. deletePic: function deletePic(e) {
  240. const index = e.detail.index
  241. const files = this.data.files
  242. const file = files.splice(index, 1)
  243. this.setData({
  244. files,
  245. currentFiles: files
  246. })
  247. this.triggerEvent('delete', {index, item: file[0]})
  248. }
  249. }
  250. })
  251. /***/ })
  252. /** *** */}))