使用Parse API上传和保存视频文件在Android中失败

时间:2013-02-22 10:27:09

标签: android parse-platform

- 我正在使用Parse api将上传并保存视频文件到应用程序的Parse.com服务器。

- 我目前使用Parse Documentation中的以下代码将视频文件上传到Parse Server:

    File f = new File("/sdcard/video-2013-02-21-13-03-24.mp4");

    byte[] videoUp = IOUtils.toByteArray( new FileInputStream(f));


    ParseFile file = new ParseFile("testVideo1", videoUp);




    file.saveInBackground(new SaveCallback() {


        public void done(ParseException e) {

      e.printStackTrace();

     }

     }, new ProgressCallback() {

     public void done(Integer percentDone) {

     System.out.println("Progress :" + percentDone);
      }
     });

- 首先其打印进度100%,这是来自System.out.println方法的done()语句的结果将Integer作为参数,然后立即 进入方法done()并使用ParseException作为参数打印以下堆栈跟踪。

FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.uploadfileusingparse.MainActivity$1$1.done(MainActivity.java:63)
at com.parse.SaveCallback.internalDone(SaveCallback.java:42)
at com.parse.SaveCallback.internalDone(SaveCallback.java:29)
at com.parse.BackgroundTask.onPostExecute(BackgroundTask.java:50)
at com.parse.BackgroundTask.onPostExecute(BackgroundTask.java:16)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)

- Parse提供了有关IPhone整合的详细教程和信息,但我没有找到任何教程解释{ {1}}。

- 任何人都可以给我一个教程解释<{1}} Api的集成上传的应用程序多媒体文件到解析服务器。

1 个答案:

答案 0 :(得分:0)

您收到错误是因为您尝试从null变量调用方法。如果saveInBackground()成功,则done(ParseException e)中的ParseException将为null。通过检查ParseException是否为null来修复它:

  public void done(ParseException e) {
      if(e==null) {
          // SUCCESS!!!
      } else {
          e.printStackTrace();
      }
  }

这适用于名称以* inBackground

结尾的所有ParseObject方法