我正在使用电子构建一个应用程序,它使用快递服务器在网络服务器中提供多个图像文件。
从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());
答案 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);