- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将图像从网址安全上传到服务器。
var http = require('http');
var fs = require('fs');
var path = require('path')
var download = function(url, dest, filename, cb) {
var file = fs.createWriteStream(dest + "/" + filename + path.extname(url));
var request = http.get(url, function(response) {
response.pipe(file);
file.on('error', function(err) {
console.log(err.message);
file.end();
});
file.on('finish', function() {
file.close(cb);
});
}).on('error', function(err) { // Handle errors
fs.unlink(dest);
if (cb) cb(err.message);
});
}
var url = "https://vignette.wikia.nocookie.net/spongebob/images/d/d7/SpongeBob_stock_art.png";
download(url, 'downloadedAssets/imgs', 'spongebob', function onComplete(err) {
if (err) {
console.log(err.message);
} else {
console.log('image uploaded to server');
}
});
导致服务器崩溃
TypeError [ERR_INVALID_PROTOCOL]: Protocol "https:" not supported. Expected "http:"
我知道我无法上传 https 文件,但为什么它会导致服务器崩溃,而不是执行 file.on('error') 然后结束文件。
我也尝试过try/catch和同样的事情
最佳答案
它在 http.get(url,function(){..})
处崩溃,因为您正在使用 http
模块。您需要使用 https
模块对 https
url 执行 get 请求。
const https = require('https');
https.get('https://encrypted.google.com/', (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
}).on('error', (e) => {
console.error(e);
});
您可以使用同时支持http
和https
的request
模块。来自 doc :
Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.const request = require('request');
const options = {
url: 'https://api.github.com/repos/request/request',
headers: {
'User-Agent': 'request'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
const info = JSON.parse(body);
console.log(info.stargazers_count + " Stars");
console.log(info.forks_count + " Forks");
}
}
request(options, callback);
或者要使用开箱即用的 Promise,请使用 axios
。
关于javascript - fs.createWriteStream on error 事件不会捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56876251/
我正在使用 Node js 将文本文件写入磁盘: const fs = Promise.promisifyAll(require('fs')); var path = directory + '/cp
我尝试了多种让我的函数返回参数的变体,以便我只能在一个步骤完成时运行我的函数,但寻找一种不会让我陷入回调 hell 的最佳方法。 我有以下功能 function convertPdfToImage(f
我有 1 个问题。不明白它是如何工作的。 我想在 fs.createWriteStream 中创建文件,因此仅适用于相对路径。所有文件夹均已创建 let p = path.resolve(`../up
我正在尝试创建发票,但由于某种原因,下面的行不起作用: document.pdfkitDoc.pipe(fs.createWriteStream('./file.pdf')) 也许是语法问题,我真的不
我正在使用 Node.js 实现文件上传,我的代码在正常情况下工作正常。 但是,当我让它无法写入文件时(例如,将其写入不存在的目录),它会调用错误处理程序,fstream.on('error', ..
我正在使用 npm 包 busboy 来解析多部分表单请求和写入流以将发送的文件写入磁盘。 这适用于小文件,但是当我尝试使用更大的文件 (7MB) 时,似乎只有大约 5MB 被写入磁盘,然后似乎事情停
我正在尝试开发一个 React 应用程序来帮助我将文件下载到我的亚马逊云端。为此,我使用了这个模块 download-file-with-progressbar 这是我的代码: var d
我正在尝试开发一个 React 应用程序来帮助我将文件下载到我的亚马逊云端。为此,我使用了这个模块 download-file-with-progressbar 这是我的代码: var d
在我的 Electron 应用程序的主进程中,我试图处理在创建一个已存在的文件时抛出的异常。然而,我的 catch 子句从未被输入,异常被发送给用户。我做错了什么? let file; try {
我正在尝试将图像从网址安全上传到服务器。 var http = require('http'); var fs = require('fs'); var path = require('path')
如何实现一个系统,其中多个 Node.js 进程使用 fs.createWriteStream 写入同一文件,这样它们就不会覆盖数据?看起来 fs.createWriteStream 的默认设置是在调
伙计们:我正在创建一个 Angular/Node 应用程序,用户可以在其中通过选择相关缩略图来下载文件。 下载文件时,会显示一个包含下载进度的小列表 - 使用 status-bar . 下载文件后会显
这两个操作之间的基本区别是什么? someReadStream.pipe(fs.createWriteStream('foo.png')); 对比 someReadStream.on('data',
我想在客户端制作一个 pdf 文件,然后必须通过 REST 调用将它发送到服务器端。 随着文件的生成,我没有问题。我使用 pdfMake 生成文件,效果很好。 因为我想将文件发送到我的后端,所以我必须
问题 我正在尝试扫描驱动器目录(递归遍历所有路径)并使用 fs.createWriteStream 将所有路径写入文件(因为它正在查找它们)以保留内存使用率低,但不起作用,扫描期间内存使用量达到2GB
我做了一个简单的从http下载函数如下(为了简化省略了错误处理): function download(url, tempFilepath, filepath, callback) { var
我正在尝试将数据写入 Node.js 中的文本文件。初始化写入流时,我收到以下错误消息: 最佳答案 确保您已将其包含在 Node 程序的顶部 var fs = require('fs'); 此外,“S
我找不到解决这个问题的方法。使用 Node fs,我使用 createWriteStream 创建了一个文件,将数据写入其中,然后尝试删除它,但在 Node 打开时无法删除它。 以下是我在这个过程中使
我正在 try catch “未捕获的异常”并将它们写入服务器上的文件中。我的代码是: var cluster = require('cluster'); // The master's job to
我正在使用 gulp、gulp-eslint 和 gulp-open 创建 ESLint 结果报告。linting 和文件写入部分工作正常,但打开我编写报告的文件的任务却无法正常工作。 gulp.ta
我是一名优秀的程序员,十分优秀!