I have a react.js redux-form that works and posts data back to my API but I need to also allow the submitter to upload an image with the form, ideally with a preview. I struggled a bit and have arrived at dropzone.js but I can't seem to get my form to actually POST the image data back.
render () {
const FILE_FIELD_NAME = 'files';
const renderDropzoneInput = (field) => {
const files = field.input.value;
return (
<div>
<Dropzone
name={field.name}
onDrop={( filesToUpload, e ) => field.input.onChange(filesToUpload)}
>
<div>Try dropping some files here, or click to select files to upload.</div>
</Dropzone>
{field.meta.touched &&
field.meta.error &&
<span className="error">{field.meta.error}</span>}
{files && Array.isArray(files) && (
<ul>
{ files.map((file, i) => <li key={i}>{file.name}<img src={file.preview}/></li>) }
</ul>
)}
</div>
);
}
return (
<form onSubmit={this.props.handleSubmit(this.onSubmit)}>
<div className="form-group">
<Field name="files" component={renderDropzoneInput} />
</div>
<button type="submit" className="btn btn-default">Submit</button>
</form>
);
}
The files
variable does get POSTed back to the API which is great but it contains the following:
[preview=blob:http://localhost:3000/bed3762e-a4de-4d19-8039-97cebaaca5c1]
Can anyone suggest how I get the actual binary data in to that variable please?
The full code is available here https://github.com/rushughes/dsloracle/blob/master/client/src/components/LandCreate/index.js