|
48 | 48 | } |
49 | 49 | } |
50 | 50 |
|
| 51 | + /** |
| 52 | + * Loads a given File object via FileReader interface. |
| 53 | + * |
| 54 | + * @param {Blob} file Blob object |
| 55 | + * @param {Function} onload Load event callback |
| 56 | + * @param {Function} [onerror] Error/Abort event callback |
| 57 | + * @param {string} [method=readAsDataURL] FileReader method |
| 58 | + * @returns {FileReader|boolean} Returns FileReader if API exists, else false. |
| 59 | + */ |
| 60 | + function readFile(file, onload, onerror, method) { |
| 61 | + if (!$.FileReader) return false |
| 62 | + var reader = new FileReader() |
| 63 | + reader.onload = function () { |
| 64 | + onload.call(reader, this.result) |
| 65 | + } |
| 66 | + if (onerror) { |
| 67 | + reader.onabort = reader.onerror = function () { |
| 68 | + onerror.call(reader, this.error) |
| 69 | + } |
| 70 | + } |
| 71 | + var readerMethod = reader[method || 'readAsDataURL'] |
| 72 | + if (readerMethod) { |
| 73 | + readerMethod.call(reader, file) |
| 74 | + return reader |
| 75 | + } |
| 76 | + } |
| 77 | + |
51 | 78 | /** |
52 | 79 | * Loads an image for a given File object. |
53 | 80 | * |
|
140 | 167 | img.src = url |
141 | 168 | return img |
142 | 169 | } |
143 | | - return loadImage.readFile(file, function (e) { |
144 | | - var target = e.target |
145 | | - if (target && target.result) { |
146 | | - img.src = target.result |
147 | | - } else if (reject) { |
148 | | - reject(e) |
149 | | - } |
150 | | - }) |
| 170 | + return readFile( |
| 171 | + file, |
| 172 | + function (url) { |
| 173 | + img.src = url |
| 174 | + }, |
| 175 | + reject |
| 176 | + ) |
151 | 177 | } |
152 | 178 | } |
153 | 179 | if ($.Promise && typeof callback !== 'function') { |
|
179 | 205 | callback(img, data) |
180 | 206 | } |
181 | 207 |
|
182 | | - // Loads a given File object via FileReader interface, |
183 | | - // invokes the callback with the event object (load or error). |
184 | | - // The result can be read via event.target.result: |
185 | | - loadImage.readFile = function (file, callback, method) { |
186 | | - if ($.FileReader) { |
187 | | - var fileReader = new FileReader() |
188 | | - fileReader.onload = fileReader.onerror = callback |
189 | | - // eslint-disable-next-line no-param-reassign |
190 | | - method = method || 'readAsDataURL' |
191 | | - if (fileReader[method]) { |
192 | | - fileReader[method](file) |
193 | | - return fileReader |
194 | | - } |
195 | | - } |
196 | | - return false |
197 | | - } |
198 | | - |
199 | 208 | loadImage.global = $ |
| 209 | + loadImage.readFile = readFile |
200 | 210 | loadImage.createObjectURL = createObjectURL |
201 | 211 | loadImage.revokeObjectURL = revokeObjectURL |
202 | 212 |
|
|
0 commit comments