将图像从 Android 上传到节点

Uploading Image from Android to Node

我正在尝试通过 Android Studio 将多张图片上传到我的节点服务器。然而,服务器上的图像文件似乎总是损坏。我可以在 Android 中拍摄和预览照片,但无法将其存储在我的服务器上。

这是我的服务器代码

app.post('/upload', function(req, res) {
    var base64Data = req.rawBody;
    fs.writeFile("test.jpg",base64Data,'base64',function(err,written){
        if(err) console.log(err);
        else {
            console.log("file Succesfully written ");    
            cloudinary.uploader.upload("test.jpg", function (image) {
                if(image !== undefined) {

                     res.json({link: image.secure_url}).end();
                     console.log("url = " , image.secure_url);
                 //   fs.unlink(ImageFile);
                } else console.log.error("Error uploading to Cloudinary, ", image);
            });
        }
    });
});

这是我用来将位图转换为编码的 Base64 字符串的前端代码。

final String encodedString = ImageBase64.encode(fileArray.get(i));

这里是 encodedString 在设置后保存的内容的日志。显然没有显示完整的值。

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
                                                                          AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
                                                                          AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAMgA+gDASIA
                                                                          AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA

但是在我的后端显示为这样

2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB%0AAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH%2F2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB%0AAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH%2FwAARCAMgA%2BgDASIA%0AAhEBAxEB%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQ
InputStream imageStream;
                try {
                    imageStream = getContentResolver().openInputStream(uri);//uri is the image URI
                    Bitmap bm = BitmapFactory.decodeStream(imageStream);
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
                    byte[] byteArray = baos.toByteArray();
                    String encodedImage = Base64.encodeToString(byteArray,Base64.NO_WRAP);//encodedImage is your image string

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

如果您对其进行了 url 编码,那么您应该对其进行 url 解码。