Android 通过okhttp向服务器发送文件

Android 通过okhttp向服务器发送文件,android,node.js,server,okhttp,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/')

我的服务器端应用程序中有这个
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
库,我想创建表单数据


我该怎么做?

您必须将
文件
发送到服务器,而不是
位图
,并且必须使用
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);
        }

    }

}

你试过什么?我们无法为您编写代码。向我们展示您的Android代码,并发布您看到的问题/错误,也许我们可以提供帮助。