在Node.js中如何将multipart / form-data上传的图像转换为base64格式

我想让用户从本地文件系统中select一个图像,然后将这个图像渲染到页面上的一个canvas元素。

由于安全约束('沙盒'浏览器安全模型),客户端javascript不能直接访问文件系统上的映像,因此必须从file upload控件中以“multipart / form-data”的forms往返服务器。

我不想实际上将这个图像保存在服务器上并提供,因为这只是一次性的客户端操作目的。 所以,我想知道是否有可能将服务器端的图像数据转换成可以发送回客户端的base64编码表示。 然后,我可以很容易地把它作为数据的URL,而不需要将图像保存在服务器上的任何地方。 或者,还有更好的方法?

我在服务器上使用node.js。

我不认为有必要将它保存在服务器上,否则会导致Base64编码数据URI的代价; 只需将其存储在内存中足够长的时间以供客户端下载。 所以你的顺序会像这样:

  1. 客户端通过“multipart / form-data”提交上传图片。
  2. 当服务器接收到表单时,它会生成一个“丢弃”的URL(例如,可以作为#1请求的响应主体返回)。 图像文件数据被简单地存储在存储器中。
  3. 客户端可以从#2中的URL检索图像数据。
  4. 当客户端请求#2中的URL时,服务器简单地回显图像数据; 在请求完成后,服务器可以丢弃数据引用,从而释放内存。

请注意,由于node.js和AJAX请求项目1-4的asynchronous性质可以同时完成(尽pipe“丢弃”URL可能必须与表单post分开商定,才能真正以这种方式工作)。

https://github.com/joyent/node/wiki/modules ,抓住一个base64编码库,只是回声data:image/png;base64,其次是base-64编码文件,用任何东西代替“png”是合适的(gif / jpeg)

“更好”的方法是实际将文件放到tmp文件夹中,回显到该文件的链接,然后删除该目录中比X分钟更早的文件。