javascript - 使用 Superagent 通过 ajax 提交包含图像值的表单

标签 javascript ajax pyramid superagent

我尝试了几种不同的方法,但似乎都无法正确提交我的图标文件

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/

相关文章:

javascript - 像基于类的组件一样将数据传递给 React (Native) 钩子(Hook)

javascript - 避免在列表中显示未定义的数据

jquery - 如何在 MVC 中绑定(bind) HandsonTables

javascript - knockout.js 虚拟模板绑定(bind)

ajax - Firefox 网站如何使其下载统计页面正常工作?

javascript - AJAX获取JSON函数不循环

python - 我需要为一个简单的网站使用网络框架吗?

pyramid - 启动 uWSGI 服务器后如何停止它?

python - virtualenv 下的 Pyramid : can't import simplejson module

javascript - 拒绝在浏览器中设置不安全 header "Cookie"错误但请求成功