请帮忙我在这个问题上被困了四天! 我想上传PDF文件解析,但在重新启动时,它达到100%,经过一番尝试失败并给予例外:上传解析文件继续重启,然后失败?
com.parse.ParseRequest $ ParseRequestException:I/O故障
但有时工作了一些文件。
有我的代码。
public class MainActivity extends AppCompatActivity {
public static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent choosePhotoIntent = new Intent(Intent.ACTION_GET_CONTENT);
choosePhotoIntent.setType("pdf/*");
startActivityForResult(choosePhotoIntent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
Log.d(TAG, "onActivityResult() returned: ");
Uri pdfUri = data.getData();
byte[] fileBytes = FileHelper.getByteArrayFromFile(this, pdfUri);
//replace spaces with "_" because parse don't accept file name with spaces.
String fileName = pdfUri.getLastPathSegment().replaceAll("\\s+", "_");
Log.d(TAG, "pdf uri: " + pdfUri);
Log.d(TAG, "pdf fileName: " + fileName);
ParseObject parseObject = new ParseObject("bigPdf");
ParseFile parseFile = new ParseFile("fileName", fileBytes);
parseObject.put("pdf", parseFile);
parseFile.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d(TAG, "done ");
} else {
Log.e(TAG, "done: ", e);
}
}
}, new ProgressCallback() {
@Override
public void done(Integer percentDone) {
Log.d(TAG, "done " + percentDone);
}
});
parseObject.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d(TAG, "done ");
} else {
Log.e(TAG, "done: ", e);
}
}
});
}
}
}
}
是我的代码和你之间的区别!与您的代码相同的问题。 – humazed
在保存解析对象之前,您的代码不会等待文件保存操作完成。 Mine将解析对象保存到文件保存回调中。 – nasch
对不起,我第一次不明白,但解析SDK自己处理它,并在保存对象之前等待文件被保存。所以这就是这个问题;无论如何,我尝试了你的代码和问题相同,所以这是一个SDK中的错误,因为当我用我的答案中描述的旧的时候,我的问题解决了。 任何方式谢谢 – humazed