我正在创建聊天室的发送文件功能。我使用的语言是nodejs(socket.io)和js。
我的解决方法是
使用javacript fileReader
以ArrayBuffer
的形式读取chrunks中的文件,并将片段传输到服务器,服务器收集数据直到收集所有数据。
将ArrayBuffer
发送回其他客户端。
在客户端,将ArrayBuffer
转换为base64String
,并根据MIME类型添加前缀,例如data:application/pdf;base64,
。
将此base64String
插入到<a href='{thisBase64String}' download></a>
中。
当前,它仅适用于大小小于2MB的pdf文件,download
属性不适用于超过10MB的fileSize。
我的猜测是href的大小过长导致了问题,是否有解决此问题的主意?
我知道我可以先使用fs.write
打印上载的文件,然后链接到目录。但是由于它是聊天室,所以我希望我能播出一切。无需花费时间来维护服务器,不是吗?