nodejsV12.x
axios^1.7.7
formdata^4.0.0
上传数据时候斜杠被优化掉
比如这个代码:
formData.append("myfile[]",fs.createReadStream(filename,'binary'), r"////firmw////pa0re.bin");
r"////firmw////pa0re.bin"得到的结果是pa0re.bin
初学JavaScript,不知道如何处理这个问题,有知道的大师请指导下
nodejsV12.x
axios^1.7.7
formdata^4.0.0
上传数据时候斜杠被优化掉
比如这个代码:
formData.append("myfile[]",fs.createReadStream(filename,'binary'), r"////firmw////pa0re.bin");
r"////firmw////pa0re.bin"得到的结果是pa0re.bin
初学JavaScript,不知道如何处理这个问题,有知道的大师请指导下
关注本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢
FormData上传文件时,你遇到了路径中的斜杠被优化掉的情况。这可能是由于FormData在处理数据时对某些特殊字符或格式的默认处理方式导致的。node.js环境下,文件路径的处理需要遵循一定的规则,以确保数据的完整性。r开头)主要用于正则表达式中避免转义字符的额外处理。在这里使用r可能不是正确的方式。你可以直接使用普通字符串来表示文件路径。r"////firmw////pa0re.bin"改为"/firmw/pa0re.bin"。fs.createReadStream的参数fs.createReadStream方法,第二个参数'binary'在较新版本的node.js中可能不是正确的用法。在node.js 12.x中,你可以直接使用fs.createReadStream(filename)而不传递'binary'(因为node.js默认以utf - 8编码读取文件内容,对于读取文件流来说不需要指定'binary'这种模式)。FormData中的文件名FormData.append方法在处理文件名时可能会有一些默认的解析行为。你可以尝试将文件路径和文件名分开处理,然后在FormData中明确指定文件名。const axios = require('axios');
const fs = require('fs');
const FormData = require('form - data');
const formData = new FormData();
const filename = '/firmw/pa0re.bin';
const readStream = fs.createReadStream(filename);
// 明确指定文件名
formData.append('myfile[]', readStream, {
filepath: filename,
filename: 'pa0re.bin'
});
axios.post('your - upload - url', formData, {
headers: formData.getHeaders()
})
.then(response => {
console.log('上传成功', response.data);
})
.catch(error => {
console.log('上传失败', error);
});
FormData上传文件时,要注意文件路径、读取文件流的方式以及FormData中数据的组织方式。正确处理这些方面可以避免出现字符被意外优化或处理不当的情况。同时,要遵循node.js和相关库(如axios、FormData等)的最佳实践。