繁体   English   中英

如何将文件从Android上传到Node.js服务器

[英]How to upload file from Android to node.js server

我正在尝试通过http将文件从android应用程序发送到node.js服务器。

但是,虽然我可以读取文件的原始名称,但是当我收到文件时,它的大小为0字节。

您知道这里出了什么问题吗?

这是android部分:

public class ImageUploader {

public static final String HTTP_LOCALHOST_8081_FILE_UPLOAD = "http://192.168.1.104:8081/file_upload";

public void upload(InputStream inputStream, String extension) {
    AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
    RequestParams requestParams = prepareRequestParams(inputStream, extension);

    asyncHttpClient.post(HTTP_LOCALHOST_8081_FILE_UPLOAD, requestParams, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
            error.printStackTrace();
        }
    });

}

private RequestParams prepareRequestParams(InputStream inputStream, String extension) {
    RequestParams requestParams = new RequestParams();
    requestParams.put("image", inputStream, "image." + extension, "image/jpeg");
    return requestParams;
}}

这是node.js部分:

var express = require('express')
var multer = require('multer')
var app = express()
var path = require('path')
var uploading = require('./uploading/uploading.js')

var storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null, 'uploads/')
  },
  filename: function(req, file, cb) {
    cb(null, file.fieldname + '_' + Date.now() + path.extname(file.originalname))
  }
})

var upload = multer({
  storage: storage
})

app.use(express.static('public'));

app.post('/file_upload', upload.single('image'), function(req, res) {
  //uploading.openIrfanView(__dirname, req.file.filename)

  res.sendStatus(200);
})

var server = app.listen(8081, function() {})

我的猜测是java inputStream不适合http multipart请求,或者我需要使用一些特殊的节点库来读取发送的内容。

好吧,我知道了。

这是我第一次没有偶然发现-是从输入流中读取内容将其清空

我从Uri获得inputStream ,然后第一次从它读取以在设备屏幕上显示它,然后第二次将它传递给ImageUploader ,到那时inputStream已经为空。

我可能应该将这段代码粘贴到问题上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM