首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载js文件,node js

下载js文件,node js
EN

Stack Overflow用户
提问于 2020-06-11 12:23:02
回答 1查看 106关注 0票数 1

网页制作完成了,它是模块化组装的。我使用node js,即node-static服务器。

我需要实现一个文件的下载,也就是从电脑上下载,然后下载到设备上,这样文件就可以通过按钮下载了。

当我尝试从计算机到我自己的计算机时,在我需要的路径上,但无论如何它都不起作用。我已经尝试了各种npm模块。下面是html代码和发送的客户端文件:

代码语言:javascript
复制
<form name="upload" method="POST" enctype="multipart/form-data">
<input type="file" id="file" name="file">
<input type="submit" name="submit" value="Обновить">
</form>
fileId = file.name;
var formData = new FormData();
formData.append("file", document.querySelector('input').files[0]);
var xhr = new XMLHttpRequest();
xhr.open("POST", "savesettings", true);
xhr.setRequestHeader('X-File-Id', fileId);
xhr.addEventListener("load", function() {
            console.log("Done:", xhr.status);
});
xhr.send(formData);

下面是应该接受请求并将文件保存到所需目录的脚本,在我看来主要问题是:

代码语言:javascript
复制
if (req.url == '/savesettings' && req.method == 'POST') {

        let fileId = req.headers['x-file-id'];
        let filePath = path.join('/home/alexandr/alexandr/web-cfg/uploads', fileId);

        if (!uploads[fileId]) uploads[fileId] = {};
        let upload = uploads[fileId];

        let fileStream;

        upload.bytesReceived = 0;

        fileStream = fs.createWriteStream(filePath, {
            flags: 'w'
        });
        console.log("fileStream1:", fileStream);

        req.on('data', function(data) {
        console.log("data:", data.length);
        upload.bytesReceived += data.length;
        console.log("bytes received", upload.bytesReceived);
        });

        req.pipe(fileStream);
        console.log("req.pipe:", req.pipe(fileStream));
        console.log("123", req.data);

        fileStream.on('close', function() {
            if (upload.bytesReceived <= 50000) {
            debug("Upload finished");
            delete uploads[fileId];

            res.end("Success " + upload.bytesReceived);
            } else {
            debug("File unfinished, stopped at " + upload.bytesReceived);
            res.end();
            }
        });

        fileStream.on('error', function(err) {
            debug("fileStream error");
            res.writeHead(500, "File error");
            res.end();
        });
    }
EN

回答 1

Stack Overflow用户

发布于 2020-06-11 12:41:29

根据我对HTML的了解,我会说它主要在您的HTML中,而不是您的服务器中。如果您可以通过在URL中域后面键入文件的路径来访问该文件,那么您应该能够通过网站访问它。

一个简单的HTML示例如下所示:

代码语言:javascript
复制
<a href="path/to/file.js" download>

然后,您可以使用CSS设置链接的样式,使其看起来像您想要的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62317033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档