跟传统的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); 网友回复


