我正在使用 AJAX 将文件发送到某些服务器,例如:$.ajax({ type: 'POST', async: true, crossDomain: true, url: 'http://' + address + '/api/file/upload', data: formData, processData: false, contentType: false, headers: { "apiKey": "myKey", "FileName": "קובץ.txt" }, success: function (data, textStatus, jqXHR) {}});代码工作正常,但是当我在标题中放置希伯来文文件名时,出现错误:错误扫描文件类型错误:无法在“XMLHttpRequest”上执行“setRequestHeader”:值不是有效的 ByteString标题:"FileName": "קובץ.txt"不起作用。
2 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
尝试将文本编码为 utf8,例如:
unescape(encodeURIComponent(yourText)) //encode
decodeURIComponent(escape(yourText)) //decode
MM们
TA贡献1886条经验 获得超2个赞
根据https://bugs.chromium.org/p/chromium/issues/detail?id=319694#c9,标题似乎仅限于 ASCII 字符。如果您尝试将 UTF-16 值传递给端点,请考虑将其作为 POST 正文的一部分。
如果必须将值保留为标头,还可以对文件名进行 Base 64 编码并在服务器端解码。这是 base-64 编码的示例 בוקר
添加回答
举报
0/150
提交
取消