通过okhttp将文件发送到服务器

时间:2018-08-19 15:31:56

标签: android node.js server okhttp

我的服务器端应用程序中有以下node.js代码:

app.post('/upload',function (req,resp) {
    console.log(req);
    var email=req.headers['email']
    var storage = multer.diskStorage({
        destination: function (req, file, cb) {
            cb(null,'uploads/')
        },
        filename: function (req, file, cb) {
            cb(null,"asdsad"+".jpg")
        }
    })

    var upload = multer({ storage: storage }).single('propic')
    upload(req, resp, function (err) {
        if (err) {
            throw err
        }
        resp.setHeader('Content-Type', 'application/json');
        resp.send({status:true})
    })
})

我想将客户端(Android)中的位图发送到服务器。 我使用了okhttp库,我想创建表单数据。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您必须将File发送到服务器而不是bitmap,并且必须使用POST方法来处理对服务器端的请求。 并编写以下代码以将文件发送到服务器:

public class UploadService {

    private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");

    public void uploadImage(File image, String imageName) throws IOException {

        OkHttpClient client = new OkHttpClient();

        RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart("file", imageName, RequestBody.create(MEDIA_TYPE_PNG, image))
                .build();

        Request request = new Request.Builder().url("http://localhost:8080/v1/upload")
                .post(requestBody).build();

        Response response = client.newCall(request).execute();
        if (!response.isSuccessful()) {
            throw new IOException("Unexpected code " + response);
        }

    }

}
相关问题