请帮助我在这个问题上被困四天了! 我正在尝试上传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);
}
}
});
}
}
}
}
答案 0 :(得分:1)
经过五天的尝试并且失败后发现它是1.4.2版本中引入的解析SDK中的一个错误,并且从那时起就停留了,所以我已经向他们报告过了。
所以,直到他们修复了我使用1.4.1版本的bug并且它可以工作,但是进度指示器似乎在版本1.5中得到了完善,所以它给你100%而且之前没有。但至少上传工作正在进行中。
答案 1 :(得分:0)
看起来你想在保存文件后保存解析对象,所以它看起来像这样:
final 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 ");
parseObject.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d(TAG, "done ");
} else {
Log.e(TAG, "done: ", e);
}
}
});
} else {
Log.e(TAG, "done: ", e);
}
}
}, new ProgressCallback() {
@Override
public void done(Integer percentDone) {
Log.d(TAG, "done " + percentDone);
}
});
可能还有其他问题,但看起来就是从哪里开始的。