尝试使用 kinvey 将图像从 android 应用上传到云端

Trying to upload an image from android app to cloud using kinvey

我正在尝试上传保存在 phone 内存中的图像,通过 android 应用程序点击到云服务,我正在使用 Kinvey 来执行此操作。但我面临着一些问题。

每次我运行包含上传部分的代码,我都会遇到异常。我正在上传一张“.png”类型的图片。与 Google Cloud Platform 中的转换不同,任何到 blob 的转换都不是必需的过程。

这是我的 .java 代码 -

`Client mKinveyClient = new Client.Builder(APP_KEY, SECRET_KEY, this.getApplicationContext()).build();
    mKinveyClient.enableDebugLogging();

    mKinveyClient.ping(new KinveyPingCallback() {
        public void onFailure(Throwable t) {
            Log.e(TAG, "Kinvey Ping Failed", t);
        }
        public void onSuccess(Boolean b) {

            Log.d(TAG, "Kinvey Ping Success");
        }
    });

    java.io.File file = new java.io.File(Environment.getExternalStorageDirectory().getPath() + "/Camera/" + "IMG_20161115_193353.jpg");

    mKinveyClient.file().upload(file, new UploaderProgressListener() {
            public void onSuccess(Void result) {
            Log.i(TAG, "successfully upload file");
        }

        @Override
        public void onSuccess(FileMetaData fileMetaData) { 
                Log.i(TAG, "successfully uploaded file");
            }
        @Override
        public void onFailure(Throwable error) {
            Log.e(TAG, "failed to upload file.", error);
            }
        @Override
        public void progressChanged(MediaHttpUploader uploader) throws IOException {
            Log.i(TAG, "upload progress: " + uploader.getUploadState());                       // all updates to UI widgets need to be done on the UI thread
            }
        });`

现在,虽然 ping 调用给我一个成功的响应,但上传部分给我一个错误。

E/Activity file: failed to upload file. com.kinvey.java.KinveyException: REASON: No user is currently logged in.

我在 kinvey 的讨论平台和这里都搜索过很多关于这个主题的内容。但我还是卡住了。我不知道我要去哪里错了或者我可能会错过什么。

如果有人成功通过 kinvey 上传图片,请帮助我。

必须通过登录用户提供任何类型的 Kinvey 操作。 在开始 i/o 任何信息之前,您必须注册(或登录)。

mKinveyClient.user().create("username", "password", new KinveyUserCallback()) {
    @Override
    public void onFailure(Throwable t) {
        CharSequence text = "Could not sign up.";
        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onSuccess(User u) {
        //here we go on uploading file
    }
});

您可以找到有关用户的更多信息here

沙米斯塔,

是的,每个应用操作都需要一个活跃的用户上下文。 因此,您需要先登录应用程序,然后再上传文件。

请看以下内容: http://devcenter.kinvey.com/android/guides/users#ActiveUser http://devcenter.kinvey.com/android/guides/files#Uploading

谢谢, 普拉纳夫 金维