2017-07-31 10 views
1

httpでAndroidアプリケーションからnode.jsサーバーにファイルを送信しようとしています。Androidからnode.jsサーバーにファイルをアップロードする方法

ただし、ファイルを受け取ったときにファイルの元の名前を読み取ることはできますが、サイズは0バイトです( )。

ここで何がうまくいかないと思いますか?ここで

はアンドロイド一部です:

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要求またはIのために適合しないということですいくつかの特別なノード・ライブラリーを使用して、送信されるものを読み取る必要があります。

答えて

0

私はそれを得ました。

これは初めてではなく、入力ストリームからの読み込みですはそれを空にします

Iは、デバイスの画面上に表示するために最初にそれから読み出された後、第2時間ImageUploaderにそれを通過させ、その時点でinputStreamが既に空で、次いで、UriからinputStreamを得ました。

おそらく、そのコードの断片を質問に貼り付けていたはずです。

関連する問題