我尝试了几种不同的方法,但似乎都无法正确提交我的图标文件
request
.post('/my/newapp')
.type('multipart/form-data')
.field('name', input.newAppName)
.field('description', input.newAppDescription)
.field('csrf', csrf.newApp)
.attach('icon', this.refs.icon.value) // Doesn't save for some reason
.end((err, res) => {...
对于上面的提交,我的请求负载如下所示:
------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="name"
afasfasfasf
------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="description"
------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="csrf"
16we7ncdfoyz5twnc1ilhg5pjgr6ze5s36153ffbf:aYCZkOQV6nxQq6mXWmCLOQ==
------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="icon"
------WebKitFormBoundarywygaaRkqk2Kr6zzJ--
但我在 Pyramid 应用程序上收到 502:ValueError: 多部分形式的无效边界:''
。
我也尝试过使用 FormData
但无济于事。
let formData = new FormData();
formData.append('name', input.newAppName);
formData.append('description', input.newAppDescription);
formData.append('csrf', csrf.newApp);
formData.append('icon', this.refs.icon.value);
request
.post('/my/newapp')
.type('form')
.set('Content-Type', 'application/x-www-form-urlencoded')
.send(formData)
.end((err, res) => {...
非常感谢任何见解。如果我做一个正常的非ajax表单发布它工作正常。
最佳答案
想通了。将图标添加到 formData 时我使用了错误的属性。
handleSubmit(e) {
e.preventDefault();
let {input, csrf, setErrorModal} = this.props;
let formData = new FormData();
formData.append('name', input.newAppName);
formData.append('description', input.newAppDescription);
formData.append('csrf', csrf.newApp);
formData.append('icon', this.refs.icon.files[0]);
request
.post('/my/newapp')
.send(formData) // works now =-]
.end((err, res) => {...
关于javascript - 使用 Superagent 通过 ajax 提交包含图像值的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572093/