使用 window.btoa()加密文件,并且把文件名字当作url打开文件,如何处理文件名中的空格问题?
使用 window.btoa() 对文件名字进行加密处理,处理成功后放在URL上打开文件,
如果文件名字含有空格会打不开文件(空格会含有的),这个空格如何处理?
解决了 谢谢大家
回答:
1、去除字符串内所有的空格:str = str.replace(/\s*/g,"");
2、 url.trim()方法
回答:
前端使用 btoa() 转换的Base64 编码的内容是可以转换带空格的内容的,只不过服务端打开的时候,在URL上的空格会有问题。
所以解决问题最直接的方式就是服务端在接收文件上传之后把文件名中的空格等可能导致问题的符号转换成下划线就行了。
回答:
不是很理解你说的因为文件名有空格,即使因为你文件名有空格,经过 base64 处理后,空格也会编码成其他的字符呐,而不是原本的空格。
不过,base64 后确实存在一些特别的字符,对于 URL 不友好,比如:+
、/
,其中 +
在,过去的标准中,是可以被转为空格的(RFC 3986 中为 %20),而 /
则是路径分隔符。
主要问题焦点在于 +
的话,那可能就要看后端对于这个的处理,有可能能是后端直接处理原始字符,也可能 web 服务器处理过,那就有可能是可以正确解析的,但是也有例外情况,就是后端没有处理,把代表空格的 +
,直接当成 +
处理了,这种情况下,也应该是在 base64 解码的时候就应该出现异常。
当然,还有一种常见的作法,urlsafe base64
这种编码规则,会把编码后的 base64 部分非 URL 友好的字符替换为 URL 友好的,其中会把 +
=> -
、/
=> _
、移除 =
。这样在解码前再做反向操作即可。
以上是 使用 window.btoa()加密文件,并且把文件名字当作url打开文件,如何处理文件名中的空格问题? 的全部内容, 来源链接: utcz.com/p/934971.html