如何将PDF文件上传到解析服务器?

时间:2019-10-01 12:59:45

标签: java android server uri parse-server

我需要帮助,使用android Studio中的JAVA将pdf文件上传到解析服务器。

我尝试使用以下代码:

private ParseObject uploadPDFToParse(File PDFFile, ParseObject po, String columnName){

    if(PDFFile != null){
        Log.d("EB", "PDFFile is not NULL: " + PDFFile.toString());
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        BufferedInputStream in = null;
        try {
            in = new BufferedInputStream(new FileInputStream(PDFFile));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        int read;
        byte[] buff = new byte[1024];
        try {
            while ((read = in.read(buff)) > 0)
            {
                out.write(buff, 0, read);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] pdfBytes = out.toByteArray();

        // Create the ParseFile
        ParseFile file = new ParseFile(PDFFile.getName() , pdfBytes);
        po.put(columnName, file);

        // Upload the file into Parse Cloud
        file.saveInBackground();
        po.saveInBackground();
    }
    return po;
}

我收到此错误:

  

E / Android运行时:致命异常:主要       进程:com.jackady.notebytebylev3l,PID:31048       java.lang.RuntimeException:无法交付结果ResultInfo {who = null,request = 0,result = -1,data = Intent {   dat = content://com.mi.android.globalFileexplorer.myprovider/external_files/Download/CourseRegistrationReport   (1).pdf flg = 0x1}}至活动   {com.jackady.notebytebylev3l / com.jackady.notebytebylev3l.uploadPDF}:   java.lang.NullPointerException:尝试调用虚拟方法'int   空对象引用上的java.io.BufferedInputStream.read(byte [])'           在android.app.ActivityThread.deliverResults(ActivityThread.java:4419)           在android.app.ActivityThread.handleSendResult(ActivityThread.java:4461)           在android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)           在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)           在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)           在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1831)           在android.os.Handler.dispatchMessage(Handler.java:106)           在android.os.Looper.loop(Looper.java:201)           在android.app.ActivityThread.main(ActivityThread.java:6806)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:547)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)        由以下原因引起:java.lang.NullPointerException:尝试在服务器上调用虚拟方法'int java.io.BufferedInputStream.read(byte [])'   空对象引用           在com.jackady.notebytebylev3l.uploadPDF.uploadPDFToParse(uploadPDF.java:43)           在com.jackady.notebytebylev3l.uploadPDF.onActivityResult(uploadPDF.java:140)           在android.app.Activity.dispatchActivityResult(Activity.java:7590)           在android.app.ActivityThread.deliverResults(ActivityThread.java:4412)           在android.app.ActivityThread.handleSendResult(ActivityThread.java:4461)           在android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)           在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)           在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)           在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1831)           在android.os.Handler.dispatchMessage(Handler.java:106)           在android.os.Looper.loop(Looper.java:201)           在android.app.ActivityThread.main(ActivityThread.java:6806)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:547)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

1 个答案:

答案 0 :(得分:0)

尝试以下代码,让我知道:

private ParseObject uploadPDFToParse(File PDFFile, ParseObject po, String columnName){

    if(PDFFile != null){
        Log.d("EB", "PDFFile is not NULL: " + PDFFile.toString());
        int size = (int) file.length();
        byte[] pdfBytes = new byte[size];

        try {
            BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
            buf.read(pdfBytes, 0, pdfBytes.length);
            buf.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // Create the ParseFile
        ParseFile file = new ParseFile(PDFFile.getName() , pdfBytes);
        po.put(columnName, file);

        // Upload the file into Parse Cloud
        file.save();
        po.saveInBackground();
    }
    return po;
}
相关问题