+
95
-

回答

跟传统的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);

网友回复

我知道答案,我要回答