跟传统的mutipart上传文件不同,我们以后端php为例来演示一下:
html代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>XHR 上传文件示例</title>
</head>
<body>
  <input type="file" id="fileInput">
  <button id="uploadButton">上传</button>
  <script>
    const fileInput = document.getElementById('fileInput');
    const uploadButton = document.getElementById('uploadButton');
    uploadButton.addEventListener('click', () => {
      const file = fileInput.files[0];
      
      const xhr = new XMLHttpRequest();
      xhr.open('POST', 'upload.php');
      xhr.setRequestHeader('Content-Type', 'application/octet-stream');
xhr.setRequestHeader('X-File-Name', file.name);
      xhr.onload = () => {
        console.log('上传成功');
      };
      xhr.onerror = () => {
        console.log('上传失败');
      };
      xhr.send(file);
      return function(){
        xhr.abort();
     }
    });
  </script>
</body>
</html>upload.php<?php
// 获取原始的文件内容
$rawData = file_get_contents('php://input');
// 得到文件名
$fileName = $_SERVER['HTTP_X_FILE_NAME']; 
// 写入文件
$fp = fopen("/data/wwwroot/default/Data/{$fileName}", 'w');
fwrite($fp, $rawData); 
fclose($fp);					网友回复


