| 296 | } |
| 297 | |
| 298 | _upload() { |
| 299 | var xhr = new XMLHttpRequest(); |
| 300 | xhr.open('POST', 'http://posttestserver.com/post.php'); |
| 301 | xhr.onload = () => { |
| 302 | this.setState({isUploading: false}); |
| 303 | if (xhr.status !== 200) { |
| 304 | console.log( |
| 305 | 'Upload failed', |
| 306 | 'Expected HTTP 200 OK response, got ' + xhr.status |
| 307 | ); |
| 308 | return; |
| 309 | } |
| 310 | if (!xhr.responseText) { |
| 311 | console.log( |
| 312 | 'Upload failed', |
| 313 | 'No response payload.' |
| 314 | ); |
| 315 | return; |
| 316 | } |
| 317 | var index = xhr.responseText.indexOf('http://www.posttestserver.com/'); |
| 318 | if (index === -1) { |
| 319 | console.log( |
| 320 | 'Upload failed', |
| 321 | 'Invalid response payload.' |
| 322 | ); |
| 323 | return; |
| 324 | } |
| 325 | var url = xhr.responseText.slice(index).split('\n')[0]; |
| 326 | console.log('Upload successful: ' + url); |
| 327 | }; |
| 328 | var formdata = new FormData(); |
| 329 | this.state.textParams.forEach( |
| 330 | (param) => formdata.append(param.name, param.value) |
| 331 | ); |
| 332 | if (this.state.randomPhoto) { |
| 333 | formdata.append('image', {...this.state.randomPhoto, type:'image/jpg', name: 'image.jpg'}); |
| 334 | } |
| 335 | xhr.upload.onprogress = (event) => { |
| 336 | console.log('upload onprogress', event); |
| 337 | if (event.lengthComputable) { |
| 338 | this.setState({uploadProgress: event.loaded / event.total}); |
| 339 | } |
| 340 | }; |
| 341 | xhr.send(formdata); |
| 342 | this.setState({isUploading: true}); |
| 343 | } |
| 344 | |
| 345 | render() { |
| 346 | var image = null; |