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