我正在尝试使用快速应用程序“代理”某个文件。为什么下面的代码不起作用?
string input = "AAAA000343BBB343";
string[] result = Regex.Matches(input, @"[a-zA-Z]+|\d+")
.Cast<Match>()
.Select(x => x.Value)
.ToArray(); //"AAAA" "000343" "BBB" "343"
当我直接“忘记”文件时,它可以工作:
var app = require('express')()
var request = require('superagent')
app.get('/image', function(req, res, next) {
request('http://s3.amazonaws.com/thumbnails.illustrationsource.com/huge.104.520060.JPG')
.then(function(_res) {
_res.pipe(res)
})
})
app.listen(3001, function() {
console.log('listen')
})
当我调用我的enpdpoint时,它永远不会完成:
$ wget http://s3.amazonaws.com/thumbnails.illustrationsource.com/huge.104.520060.JPG
--2016-07-20 11:44:33-- http://s3.amazonaws.com/thumbnails.illustrationsource.com/huge.104.520060.JPG
Resolving s3.amazonaws.com... 54.231.120.106
Connecting to s3.amazonaws.com|54.231.120.106|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 21026 (21K) [image/jpeg]
Saving to: 'huge.104.520060.JPG'
huge.104.520060.JPG 100%[==============================================================================================>] 20.53K --.-KB/s in 0.1s
2016-07-20 11:44:34 (203 KB/s) - 'huge.104.520060.JPG' saved [21026/21026]
一些细节:
$ wget localhost:3001/image
--2016-07-20 11:45:00-- http://localhost:3001/image
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:3001... connected.
HTTP request sent, awaiting response...
答案 0 :(得分:2)
不应将superagent的响应对象视为流,因为它可能已经是自动序列化的结果(例如,从JSON到JavaScript对象)。 documentation on piping data表示您可以直接将superagent请求传递给流,而不是使用响应对象:
var app = require('express')()
var request = require('superagent')
app.get('/image', function(req, res, next) {
request('http://s3.amazonaws.com/thumbnails.illustrationsource.com/huge.104.520060.JPG')
.pipe(res)
})
app.listen(3001, function() {
console.log('listen')
})
答案 1 :(得分:0)
使用Promises,请按以下方式下载:
const fs = require('fs');
const path = require('path');
const download = (url) => {
return superagent.get(url)
.then((response) => {
const stream = fs.createWriteStream('file.ext');
return response.pipe(stream);
});
};