javascript – XHR.send(文件参数)?

我试图弄清楚如何在同一 XMLHttpRequest中发送文件和参数.这可能吗?

显然我可以做xhr.send(文件参数)或xhr.(文件,参数).而且我认为我不能设置两个不同的请求标头来执行此操作…

xhr.setRequestHead('X_FILENAME',file.name)
xhr.send(file);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(params);

有没有办法发送params而不必使用GET或次要xhr请求?

解决方法

如果您依赖支持FormData的浏览器,您可以使用下面的代码(JavaScript):
var formData = new FormData();
formData.append('param1','myParam');
formData.append('param2',12345); 
formData.append('uploadDir','public-data');  
formData.append('myfile',file);

xhr.send(formData);

然后,在服务器端,您可以使用此代码(PHP)访问您的变量:

<?
  $param1 = $_POST['param1']; //myParam
  $param2 = $_POST['param2']; //12345
  $uploaddir = $_POST['uploadDir']; //public-data
  $fileName = $_FILES['myfile']['name'];
  $fileZise = $_FILES['myfile']['size'];
  $uploaddir = getcwd().DIRECTORY_SEParaTOR.$uploaddir.DIRECTORY_SEParaTOR;
  $uploadfile = $uploaddir.basename($fileName);       
  move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile);
  echo $fileName.' ['.$fileZise.'] was uploaded successfully!';
?>

获取$_FILES [‘myfile’]的所有参数,请使用var_dump($_ FILES [“myfile”])

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...