我想允许用户从他们的本地文件系统中选择一个图像,然后将该图像渲染到页面上的canvas元素。
由于安全性限制('沙盒'浏览器安全模型),客户端javascript无法直接访问文件系统上的图像,因此它必须从服务器往返一次“multipart / form-data”文件上传控件。
我不想将此图像实际保存在服务器上并将其提供出来,因为它仅用于一次性客户端操作。所以,我想知道是否有可能将图像数据服务器端转换为base64编码表示,可以将其发送回客户端。然后我可以轻松地将其作为数据URL绘制回客户端,而无需将图像保存在服务器上的任何位置。或者有更好的方法吗?
我在服务器上使用node.js.
答案 0 :(得分:1)
转到https://github.com/joyent/node/wiki/modules,抓取一个base64编码库,然后简单地回显data:image/png;base64,
,后跟base-64编码文件,用适当的(gif / jpeg)替换“png”
“更好”的方法是将文件实际放入tmp文件夹,回显该文件的链接,然后删除该目录中超过X分钟的所有文件。
答案 1 :(得分:1)
我认为无需将其保存在服务器上或产生Base64 encoding a data URI的费用;只需将其存储在内存中足够长的时间,以便客户端下载。所以你的序列将是这样的:
请注意,由于node.js和AJAX请求的异步性质,项目1-4可以同时完成(尽管“丢弃”URL可能必须与表单帖子单独商定才能真正实现这样工作)。