我正在使用.zip
创建node.js
文件(使用nw.js
),然后将生成的文件的路径发送到前端。我希望用户能够将HTML元素从nw.js
窗口拖到他的桌面并将其更改为drop .zip
文件(使用其他文件类型here结帐一个简单示例)。
我知道我可以使用dataTransfer
属性并将数据类型设置为application/zip
,但我不知道如何使用此方法发送.zip
文件数据。
React = require "react"
module.exports = React.createClass
onDragStart : ( event ) ->
event.dataTransfer.setData "application/zip:#{@props.path}"
render : ->
<div draggable="true" onDragStart={@onDragStart}>Download</div>
我想我应该为.zip
文件创建一个流,但我不知道如何。即使在“客户端”,我也可以访问fs
模块,因此没有限制。有关如何实现这种效果的任何想法?
答案 0 :(得分:0)
我想出了如何让它发挥作用。它没有用,因为我试图下载本地文件,所以我创建了一个临时HTTP服务器,它在MIME类型设置为.zip
的每个请求上返回application/zip
文件。然后我只需要将数据传输URL设置为http://localhost:3000
并瞧。
以下是代码:
fs = require "fs"
http = require "http"
React = require "react"
module.exports = React.createClass
componentWillMount : ->
index = fs.readFileSync @props.path
server = http.createServer ( request, response ) =>
response.writeHead 200, { "Content-Type" : "application/zip" }
response.end index
server.listen 3000
onRequestDownload : ( event ) ->
event.dataTransfer.setData "DownloadURL", "application/zip:FileName.zip:http://localhost:3000"
render : ->
<div className="view download">
<div className="download-item" draggable="true" onDragStart={@onRequestDownload}>Download</div>
</div>