在版本106中,如果上传的文件编码是UTF-8,则可能会出现以下代码:
POST /upload HTTP/1.1
Content-Length: xxx
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
------WebKitFormBoundary
some text
------WebKitFormBoundary
file content
------WebKitFormBoundary
而在版本107中,使用相同的代码将无法正常工作,因为新版本使用了更安全的随机值生成器,而不是低强度的Webkit boundary值。相反,应该使用crypto.randomBytes生成一个更漂亮的边界值并在发送HTTP请求时将其作为边界值,例如:
const boundary = crypto.randomBytes(16).toString('hex');
const options = {
method: 'POST',
headers: {
'Content-Type': multipart/form-data; boundary=${boundary}
}
};
const formData = new FormData(); formData.append('text', 'some text'); formData.append('file', fs.createReadStream('/path/to/file.txt'));
options.body = formData;
fetch('http://example.com/upload', options);
这将确保你在版本107中的上传请求正常工作。