标签: form-data

通过JQuery AJAX一起发送FormData和String数据?

如何发布文件和输入字符串数据FormData()?例如,我有许多其他隐藏的输入数据,我需要将它们发送到服务器,

HTML,

<form action="image.php" method="post" enctype="multipart/form-data">
<input type="file" name="file[]" multiple="" />
<input type="hidden" name="page_id" value="<?php echo $page_id;?>"/>
<input type="hidden" name="category_id" value="<?php echo $item_category->category_id;?>"/>
<input type="hidden" name="method" value="upload"/>
<input type="hidden" name="required[category_id]" value="Category ID"/>
</form>
Run Code Online (Sandbox Code Playgroud)

使用下面的代码我只管理发送文件数据而不是隐藏的输入数据.

jQuery的,

// HTML5 form data object.
var fd = new FormData();

var file_data = object.get(0).files[i];
var other_data = $('form').serialize(); // page_id=&category_id=15&method=upload&required%5Bcategory_id%5D=Category+ID

fd.append("file", file_data);

$.ajax({
    url: 'add.php',
    data: fd,
    contentType: false,
    processData: false,
    type: 'POST',
    success: function(data){
        alert(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

server.php …

javascript php ajax jquery form-data

40
推荐指数
4
解决办法
14万
查看次数

当我记录时,从现有表单创建的FormData似乎是空的

我正在尝试从Web表单中获取一组键(输入名称或类似名称)和值(输入值):

<body>
  <form>
    <input type="text" name="banana" value="swag">
  </form>

  <script>
    var form = document.querySelector('form');
    var formData = new FormData(form);
  </script>
</body>
Run Code Online (Sandbox Code Playgroud)

根据FormData文档,formData应该包含表单中的键和值.但console.log(formData)节目formData是空的.

如何使用FormData快速从表单中获取数据?

的jsfiddle

javascript form-data

40
推荐指数
4
解决办法
6万
查看次数

如何从HTML表单中获取键/值数据集

我只是在寻找一种方式来获得所有的值<form>.

我在网上搜索了一会儿,磕磕绊绊FormData,这似乎正是我正在寻找的.

但是它的API 在任何浏览器上都不可用,所以我需要一个替代方案.


在我的具体情况下我需要的是键/值对的对象.例如:

<form>
  <input type="text" name="firstname" value="John" />
  <input type="text" name="surname" value="doe" />
  <input type="email" name="email" value="" />
  <input type="radio" name="gender" value="male" />
  <input type="radio" name="gender" value="female" />
</form>
Run Code Online (Sandbox Code Playgroud)

对象应该是:

{
  firstname: "John",
  surname: "doe",
  email: "",
  gender: ""
}
Run Code Online (Sandbox Code Playgroud)

编辑:上面只是一个例子,它不仅应该<input>与其他标签一起工作(例如<select>,<textarea>等等......甚至<input type="file">应该支持).

html javascript forms html5 form-data

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

fetch - multipart/form-data POST中缺少边界

谢谢你的光临.

我想送new FormData()body一个的POST使用请求提取API

操作看起来像这样

var formData = new FormData()
formData.append('myfile', file, 'someFileName.csv')

fetch('https://api.myapp.com', 
  {
    method: 'POST',
    headers: {
      "Content-Type": "multipart/form-data"
    },
    body: formData
  }
)
Run Code Online (Sandbox Code Playgroud)

这里的问题是边界,类似的东西

boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

从来没有进入Content-Type:标题

它看起来应该是这样的

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

当你用a尝试"相同"的操作时new XMLHttpRequest(),就像这样

var request = new XMLHttpRequest()
request.open("POST", "https://api.mything.com")
request.withCredentials = true
request.send(formData)
Run Code Online (Sandbox Code Playgroud)

标题已正确设置

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

所以我的问题是,

  1. 我如何使这种情况fetch完全像XMLHttpRequest

  2. 如果这不可能,为什么?

谢谢大家!这个社区或多或少是我取得职业成功的原因.

javascript xmlhttprequest form-data fetch fetch-api

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

FormData与.serialize(),有什么区别?

最近我使用AJAX提交表单.

在研究最好的方法时,我看到了一些AJAX提交使用.serialize()和其他使用FormData.例如.

一份意见书做了这个:

data: form.serialize()
Run Code Online (Sandbox Code Playgroud)

而另一个做了:

var formData = new FormData($('form')[0]);
data: formData
Run Code Online (Sandbox Code Playgroud)

那么FormData和之间的区别是什么.serialize()

javascript ajax jquery form-data

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

如何在FileList对象中设置File对象和length属性,其中文件也反映在FormData对象中?

可以将元素的.files属性设置为例如来自不同的元素属性或属性.请参阅Make .files settable#2866,将文件上传到HTML表单并提交之间会发生什么?.<input type="file">FileList<input type="file">.filesDataTransfer.files

FileList对象有一个Symbol.iterator属性,我们可以使用它来设置一个File可迭代的对象,但是.files .length仍然设置为0并传递一个<form><input type="file">用于.files使用上述方法设置的集合,产生一个设置为的File对象..size0

如何设置Fileat FileList和set设置.lengthFileList文件数,文件在FormData()object 设置的位置?

const input = document.createElement("input");

const form = document.createElement("form");

const [...data] = [
  new File(["a"], "a.txt")
, new File(["b"], "b.txt")
];

input.type = "file";

input.name = "files";

input.multiple = true;
// …
Run Code Online (Sandbox Code Playgroud)

javascript form-data filelist fileapi

29
推荐指数
1
解决办法
9729
查看次数

使用Angular中的其他字段发送FormData

我有一个有两个input text和一个的表格upload.我必须将它发送到服务器,但我有一些问题连接文件与文本.服务器期望这个答案:

"title=first_input" "text=second_input" "file=my_file.pdf"
Run Code Online (Sandbox Code Playgroud)

这是html:

<input type="text" ng-model="title">
<input type="text" ng-model="text">
<input type="file" file-model="myFile"/>
<button ng-click="send()">
Run Code Online (Sandbox Code Playgroud)

这是控制器:

$scope.title = null;
$scope.text = null;

$scope.send = function(){
  var file = $scope.myFile;
  var uploadUrl = 'my_url';
  blockUI.start();
  Add.uploadFileToUrl(file, $scope.newPost.title, $scope.newPost.text, uploadUrl);
};
Run Code Online (Sandbox Code Playgroud)

这是指令 fileModel:

  return {
restrict: 'A',
link: function(scope, element, attrs) {
  var model = $parse(attrs.fileModel);
  var modelSetter = model.assign;

  element.bind('change', function(){
    scope.$apply(function(){
      modelSetter(scope, element[0].files[0]);
    });
  });
}
};
Run Code Online (Sandbox Code Playgroud)

这就是服务 …

http multipartform-data form-data http-post angularjs

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

Webapi formdata上传(到DB)有额外的参数

我需要上传文件发送额外的参数.

我在stackoverflow中找到了以下帖子:带有额外参数的Webapi ajax formdata上传

它描述了如何使用MultipartFormDataStreamProvider并将数据保存到文件服务器.我不需要将文件保存到服务器,而是保存到DB.我已经使用MultipartMemoryStreamProvider处理代码,但它不使用额外的参数.

你能告诉我如何在webapi中处理额外的参数吗?

例如,如果我添加文件并测试参数:

data.append("myParameter", "test"); 
Run Code Online (Sandbox Code Playgroud)

这是我的webapi处理fileupload而没有额外的参数:

if (Request.Content.IsMimeMultipartContent())
{               
    var streamProvider = new MultipartMemoryStreamProvider();
    var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileModel>>(t =>
    {
        if (t.IsFaulted || t.IsCanceled)
        {
            throw new HttpResponseException(HttpStatusCode.InternalServerError);
        }

        _fleDataService = new FileDataBLL();
        FileData fle;

        var fleInfo = streamProvider.Contents.Select(i => {         
            fle = new FileData();
            fle.FileName = i.Headers.ContentDisposition.FileName;

            var contentTest = i.ReadAsByteArrayAsync();
            contentTest.Wait();
            if (contentTest.Result != null)
            {
                fle.FileContent = contentTest.Result;
            }                       

            // get extra parameters here ??????

            _fleDataService.Save(fle);

            return new FileModel(i.Headers.ContentDisposition.FileName, 1024); //todo
        }); …
Run Code Online (Sandbox Code Playgroud)

c# file-upload form-data asp.net-web-api

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

FormData 追加嵌套对象

是否可以将嵌套对象附加到FormData?

let formData = new FormData();
let data = {
    title: 'title',
    text: 'text',
    preview: {p_title:'p title', p_text: 'p text'}
};

$.each(data, function(key, value) {
    formData.append(key, value);
});
Run Code Online (Sandbox Code Playgroud)

服务器控制台- console.log(req.body)

{
    title: 'title',
    text: 'text',
    preview: '[object Object]'
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到 的确切值preview: {p_title:'p title', p_text: 'p text'}

javascript jquery json form-data node.js

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

访问FormData值

我有一个FormData对象,我javascript从这样的HTML形式创建.该FormData对象似乎没有很好的文档(它可能只是我搜索错误的东西!).

var form = new FormData(document.getElementById("form"));
Run Code Online (Sandbox Code Playgroud)

我的问题

FormData在发送之前如何访问此对象的不同输入值?例如.form.name使用名称访问输入到输入的值form.name.

html javascript form-data

24
推荐指数
8
解决办法
6万
查看次数