【发布时间】:2018-06-15 21:59:45
【问题描述】:
我有一个 react.js redux-form 可以工作并将数据发送回我的 API,但我还需要允许提交者上传带有表单的图像,最好是预览。我有点挣扎,已经到了 dropzone.js,但我似乎无法让我的表单实际 POST 图像数据。
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>
);
}
files 变量确实被 POST 回 API,这很棒,但它包含以下内容:
[preview=blob:http://localhost:3000/bed3762e-a4de-4d19-8039-97cebaaca5c1]
谁能建议我如何将实际的二进制数据放入该变量中?
完整的代码在这里https://github.com/rushughes/dsloracle/blob/master/client/src/components/LandCreate/index.js
【问题讨论】:
-
你能指出你在服务器端接收表单数据的文件吗?
标签: javascript reactjs dropzone.js redux-form