表达检测获取请求

时间:2017-04-10 11:23:17

标签: javascript express electron

我正在使用电子构建一个应用程序,它使用快递服务器在网络服务器中提供多个图像文件。

从Android内置的其他应用中,我从服务器获取文件并将文件发布到它。

我在检测Android应用发布文件时没有问题:

app.post('/fileupload', function(req, res) {
    alert("post");
    var fstream;
    req.pipe(req.busboy);
    req.busboy.on('file', function (fieldname, file, filename) {
        //console.log("Uploading: " + filename); 
        fstream = fs.createWriteStream(__dirname + '/images/' + filename);
        file.pipe(fstream);
        fstream.on('close', function () {
            res.redirect('back');
        });
    });
});

但是仍然没有成功检测到Android应用程序何时从服务器获取文件(它获取了它们,但我无法刷新输出屏幕),我正在尝试使用此代码:

app.use(function (req, res, next) {
  alert("get");
  next();
}); 

也是这个:

app.get('/', function (req, res) {
  alert("get");
  next();
});

我将文件放在名为images:

的目录中
var express = require('express')
var app = express()
app.use(express.static('images'));
app.listen(3000);

修改

如果我使用Android获取的相同网址打开浏览器,则会触发该事件并显示警报。 Android打开连接时为什么不触发?我不知道。 get请求的Android代码是:

 URL url = new URL(sURL);
 HttpURLConnection conection = (HttpURLConnection)url.openConnection();
 conection.setRequestMethod("GET");
 conection.connect();
 int lenghtOfFile = conection.getContentLength();

 InputStream inputURL = new BufferedInputStream(url.openStream());

2 个答案:

答案 0 :(得分:0)

如果您正在调用API,那么您应该使用json的res.send()

 app.post('/fileupload', function(req, res) {
        alert("post");
        var fstream;
        req.pipe(req.busboy);
        req.busboy.on('file', function (fieldname, file, filename) {
            //console.log("Uploading: " + filename); 
            fstream = fs.createWriteStream(__dirname + '/images/' + filename);
            file.pipe(fstream);
            fstream.on('close', function () {

                 res.send({status:1,data:{}})  //check this response on android side and change/refresh screen on android side if needed 
                //res.redirect('back');

            });
        });
    });

答案 1 :(得分:0)

使用我的编译版本(23)弃用的代码,express检测到get请求。

HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet(sURL.substring(0, sURL.lastIndexOf("/")));
// Execute the request
HttpResponse response;
response = httpclient.execute(httpget);