Vydia / react-native-background-upload

Upload files in your React Native app even while it's backgrounded. Supports Android and iOS, including camera roll assets.
MIT License
732 stars 333 forks source link

Error upload image Cloudinary #91

Open TuNguyenThanh opened 6 years ago

TuNguyenThanh commented 6 years ago

Hi! Thanks @Vydia create lib great! I have a problem, when upload image to Cloudinary.

{"error":{"message":"Upload preset must be specified when using unsigned upload"}}

I enabled upload presets and choose Mode 'Unsigned'. It not work for me. Why?

When use XMLHttpRequest upload, it working fire.

    let formdata = new FormData()
    formdata.append('file', { uri: uri, type: 'image/png', name: 'upload.png' })
    formdata.append('upload_preset', upload_preset_name)
    formdata.append('timestamp', timestamp)
    formdata.append('api_key', api_key)

    const options = {
      url: upload_url,
      path: uri,
      method: 'POST',
      field: formdata,
      notification: {
        enabled: true
      },
      type: 'multipart'
    }

    Upload.startUpload(options).then((uploadId) => {
      console.log('Upload started')
      Upload.addListener('progress', uploadId, (data) => {
        console.log(data)
        console.log(`Progress: ${data.progress}%`)
      })
      Upload.addListener('error', uploadId, (data) => {
        console.log(`Error: ${data.error}%`)
      })
      Upload.addListener('cancelled', uploadId, (data) => {
        console.log(`Cancelled!`)
      })
      Upload.addListener('completed', uploadId, (data) => {
        // data includes responseCode: number and responseBody: Object
        console.log(data)
        console.log('Completed!')
      })
    }).catch((err) => {
      console.log('Upload error!', err)
    })

Thanks!

steve1000 commented 5 years ago

Not sure if you've solved this already but you need to have your upload preset in your request under the parameters key:

const options = {
  url: upload_url,
  ...etc,
  parameters: {
    upload_preset: 'your_preset_here'
  }
}