标签: form-data

带有 formdata 的 Express body-parser req.body 是空对象

不知何故我的 req.body 总是空的,也许你有一个想法:

这是我的服务器代码:

const Express = require('express');
const bodyParser = require('body-parser');

const app = new Express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.post('/save', (req, res) => {
  console.log(req.body)  // => {}
  res.send(req.body);
});

const env = process.env.NODE_ENV || 'production';
app.listen(3000, err => {
   if (err) { return console.error(err); }
   console.info(`Server running on http://localhost:${port} [${env}]`);
});
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 javascript 发送 formdata 时,req.body 为空:

const data = new FormData(document.querySelector('form'));
console.log(data);  // seems empty already??? FormData{}??
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:3000/save');
xhr.send(data); …
Run Code Online (Sandbox Code Playgroud)

javascript form-data node.js express body-parser

11
推荐指数
2
解决办法
2万
查看次数

FormData未定义 - Firefox 3.6.28替代方案

我有一份非常出色的工作,不得不完成最初给承包商的工作,但从未完成.不是问题但我现在被告知系统必须支持Firefox 3.6!不是很好,但不是我会失去睡眠直到现在!系统具有Ajax函数,该函数使用FormData对象,然后上载文档(通常是PDF).我通过Firefox 3.6运行了这个,我得到以下内容

"未定义FormData"
var formData = new FormData($('form')[0]);

这很好,因为我可以看到这个对象不受支持,我只需要使用不同的方法或收集方式......我用过这个:

var formData = Components.classes["@mozilla.org/files/formdata;1"]
        .createInstance(Components.interfaces.nsIDOMFormData);
Run Code Online (Sandbox Code Playgroud)

但是这给了我以下错误!

http://10.29.100.23:8080的权限被拒绝获取属性XPCComponents.classes

我不确定为什么这是......道路" @mozilla.org/files/formdata;1"不正确?我做了更多的研究而且无处可去!所以我接着想到序列化表格改变了以下内容......

var formData =  {};

$.each($('form')[0].serializeArray(), function(_, kv) {
     if (formData.hasOwnProperty(kv.name)) {
         formData[kv.name] = $.makeArray(formData[kv.name]);
         formData[kv.name].push(kv.value);
     }else {
        formData[kv.name] = kv.value;
    }
});
Run Code Online (Sandbox Code Playgroud)

虽然没有#t错误,Ajax函数没有上传(我认为它没有识别或找到文件,或者它只是为文件值收集一个字符串).有没有人对旧版浏览器中FormData的替代品有任何建议,尤其是Firefox 3.6--这是我唯一需要支持的旧浏览器.

** 更新 ****

这是HTML页面上表单的内容

<form action="" method="post" enctype="multipart/form-data" name="uploadForm" id="uploadForm" target="#">
    <label for="fileField">Rechnung hochladen</label>
    <input type="file" name="fileField" id="fileField">
    <progress id="progressbar" class="progressbar_margin hidden"></progress>
</form>
Run Code Online (Sandbox Code Playgroud)

javascript jquery form-data

10
推荐指数
1
解决办法
7249
查看次数

使用FormData发送XMLHttpRequest

我正在尝试使用JavaScript制作XHR,但我无法让它正常工作.

当我在Chrome开发者工具的"网络"标签中看到正确的请求时,我看到他们有一个"表单数据"部分,其中列出了随请求一起发送的所有信息,如下所示:

FORMDATA

现在,我已经尝试XMLHttpRequest以我知道的任何方式制作我,但我无法得到那个结果.

我试过这个:

var xhr = new XMLHttpRequest(),
    form_data = "data%5Btumblelog%5D=drunknight&data%5Bsource%5D=FOLLOW_SOURCE_REBLOG";
    // this is uri encoded: %5b = [ and %5D = ]

xhr.open('POST','https://www.somesite.com/page?' + form_data, false);
xhr.send();
Run Code Online (Sandbox Code Playgroud)

我得到了这个"查询字符串参数"而不是"表单数据":

querystringparameters

我也试过这个:

var xhr = new XMLHttpRequest(),
    formData = new FormData();

formData.append("data[tumblelog]", "drunknight");
formData.append("data[source]", "FOLLOW_SOURCE_REBLOG");
xhr.open('POST','https://www.somesite.com/page', false);
xhr.send(formData);
Run Code Online (Sandbox Code Playgroud)

我得到了"请求有效负载"而不是"表单数据":

有效载荷

最后,我试过这个:

var xhr = new XMLHttpRequest(),
    formData = {
        "data[tumblelog]": "drunknight",
        "data[source]": "FOLLOW_SOURCE_REBLOG"
    };

xhr.open('POST','https://www.somesite.com/page', false);
xhr.send(JSON.stringify(formData));
Run Code Online (Sandbox Code Playgroud)

我得到另一个"请求有效负载"而不是"表单数据":

payload2


现在,我的问题是:

如何发送我XMLHttpRequest的信息以获得与FIRST图像中显示的相同的结果?

javascript ajax xmlhttprequest form-data

10
推荐指数
1
解决办法
1万
查看次数

使用FormData上传base64编码的图像?

我有一个jpeg作为base64编码的字符串.

var image = "/9j/4AAQSkZJRgABAQEAS..."
Run Code Online (Sandbox Code Playgroud)

我想使用FormData将此jpeg上传到服务器.

var data = new FormData();
Run Code Online (Sandbox Code Playgroud)

将图像附加到数据的正确方法是什么?

javascript form-data

10
推荐指数
3
解决办法
3万
查看次数

错误:使用multer和body-parser无效的json

我目前正在使用multer用于multipart/form-data在Node.js应用程式与旁边身体解析器.

我想POST使用邮差形式的数据,但得到这个错误.

Error: invalid json
    at parse (/Users/k/Documents/application/node_modules/body-parser/lib/types/json.js:79:15)
    at /Users/k/Documents/application/node_modules/body-parser/lib/read.js:102:18
    at IncomingMessage.onEnd (/Users/k/Documents/application/node_modules/body-parser/node_modules/raw-body/index.js:136:7)
    at IncomingMessage.g (events.js:199:16)
    at IncomingMessage.emit (events.js:104:17)
    at _stream_readable.js:908:16
    at process._tickDomainCallback (node.js:381:11)
Run Code Online (Sandbox Code Playgroud)

这就是我在server.js中添加multer和body-parser的方法

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var multer = require('multer');

var app = express();

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(multer({ dest: './uploads/'}));
Run Code Online (Sandbox Code Playgroud)

我想这可能是因为闷闷不乐.当我删除body-parser并再次尝试时,它会显示空的json for console.log(req.body)console.log(req.files).

注意:body-parser版本是1.12.0,multer版本是0.1.8.

json form-data node.js multer body-parser

10
推荐指数
1
解决办法
7126
查看次数

多部分表单解析错误 - 多部分中的无效边界:无

我很沮丧,找不到解决方案:

我正在使用 angularjs 和 nodejs 创建一个项目。我从 node js 中的 angular 端获取图像数据并将此数据发送到进一步的 api。我收到错误

{
  "error": {
    "detail": "Multipart form parse error - Invalid boundary in multipart: None"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我在 nodejs 端的代码:

var request = require('request');
    console.log(req.files);
var data = {

        website:'www.gamail.xom',
        contact_number:'dsdsd',
        services_offered:'dsadasd',
        contact_name:'dasdas',
        provider_category:'exchange',
        email:'kk@gmail.com',
        image:req.files

    }
var api_url = global.common.base_url + 'vcard/1.0.0/visit_card/' + req.param('uuid') +'/';
    request({
        url: api_url,
        method: 'PUT',
        headers: {
            'Content-Type': 'multipart/form-data',
            'Authorization': 'Bearer '+req.cookies.apitoken
        },
        json: data

    }, function(error, response, body) {
        if(response.statusCode == 200 …
Run Code Online (Sandbox Code Playgroud)

form-data node.js angularjs

10
推荐指数
2
解决办法
1万
查看次数

上传angular2:Body(FormData)中的文件为空

我正在尝试将带有Angular2的图片上传到我的REST服务(Loopback).Loopback服务工作(使用Postman测试)并接受带有x-www-form-urlencoded标头的文件.

这是一个发送POST请求的简化服务方法:

public uploadFile(url : string, file: File): Observable<any> {
  let headers: Headers = new Headers();
  headers.append('Content-Type', 'application/x-www-form-urlencoded');

  let formData = new FormData();
  formData.append('file', file);

  let options: RequestOptionsArgs = { headers: headers };

  return this.http.post(url, formData, options)
  .map((res: any) => (res.text() != "" ? res.json() : {}));
}
Run Code Online (Sandbox Code Playgroud)

请注意,我已将标头设置为application/x-www-form-urlencoded,并在正文中发送包含该文件的formData.

在Angular中,直到我http.post请求的位置,formData填充了文件,文件内容存在,每个都很好:

请求前的数据

但在请求中,正文是一个空对象{}:

请求

我假设,Angular试图做JSON.stringify(formData),至少,当我尝试这个时,我也得到"{}"作为输出.

我已经看到很多帖子完全相同(http.post(url,formData)).那我错过了什么?

javascript form-data typescript angular

10
推荐指数
2
解决办法
9977
查看次数

FormData追加数组中的项目

 public List<Region> Regions { get; set; }
Run Code Online (Sandbox Code Playgroud)

在名为News.An Region Model的模型中

public class Region
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public static Region Parse(DataRow row)
        {
            return new Region
            {
                Id = Database.GetInteger(row["Id"]),

                Name = Database.GetString(row["Region"]),


            };
        }
    }
Run Code Online (Sandbox Code Playgroud)

在Javascript中我使用带有formdata的AJAX post方法.我想设置这个区域.

var regionList = [];
            if (selected === "region") {
                if (region.length <= 0) {
                    toastr.warning('Lütfen en az bir bölge seçin !!!');
                    return;
                }

                for (var i = 0; i < region.length; …
Run Code Online (Sandbox Code Playgroud)

javascript ajax asp.net-mvc jquery form-data

10
推荐指数
1
解决办法
4966
查看次数

什么会导致HTML5画布toBlob创建一个不完整的图像?

我有以下javascript从画布生成图像并将它们上传到服务器.

var can = document.createElement('canvas');
can.width = 600;
can.height = 600;
var ctx = can.getContext('2d');
ctx.fillRect(0, 0, can.width, can.height);
ctx.fillText("Julia", can.width/2, can.height/2);
can.toBlob(uploadImage, "image/jpg", 0.9);

function uploadImage(jpeg) {
  var data = new FormData();
  data.append('image', jpeg, 'image.jpg');
  ...
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

每隔一段时间,结果看起来就像上面一样,只是部分绘制的.多个画布按顺序处理和上传,仅在完成ajax(在......部分)中继续进行,因此一次只能进行一次.

你看到过这种情况吗?如果是这样,我应该在这个过程中进一步调试?可能是上下文对象中的设置或其他内容?

编辑

上传是一个ajax帖子,只在成功分支上解析了一个promise.它实际上使用angular的$ http服务:

$http({method: 'POST', url: '...', data: data}).then(function(response) {
    // callback that processes and uploads the next image
});
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome form-data chromium html5-canvas

10
推荐指数
1
解决办法
558
查看次数

React Native FormData 信息被包装到“_parts”中

我是 React Native 的新手,遇到了 FormData 的行为与预期不同的问题。我的代码:

let fileToSend = new FormData();
    fileToSend.append('File', {
    name: 'file.name',
    size: 'file.size',
    type: 'file.type',
    uri: 'file://',
});
Run Code Online (Sandbox Code Playgroud)

我期望得到这样的东西:

fileToSend = {File: [
   name: 'file.name',
   size: 'file.size',
   type: 'file.type',
   uri: 'file://',
]}
Run Code Online (Sandbox Code Playgroud)

但实际上我得到了这个:

fileToSend = [_parts: [
   0: [
     0: 'File',
     1: {
       name: 'file.name',
       size: 'file.size',
       type: 'file.type',
       uri: 'file://',
        }
]]]
Run Code Online (Sandbox Code Playgroud)

这使得我无法将文件发送到服务器。将非常高兴得到您的帮助。谢谢。

multipartform-data form-data react-native

9
推荐指数
1
解决办法
1135
查看次数