У меня есть приложение, использующее Parse-Server в качестве бэкэнда, которое я использую через back4app. База данных, которую предоставляет parse-server, - это база данных моего приложения.
Я слежу за следующими документами: https://docs.parseplatform.org/android/guide/#files
В моем приложении есть несколько кнопок загрузки файлов во фрагменте. Мое приложение принимает файлы .pdf, изображений и файлов .doc. Однако, когда я пытаюсь сохранить вновь созданные файлы синтаксического анализа с помощью saveDataInBackground (), я получаю ошибку ввода-вывода.
Мой код, как показано ниже:
В моем фрагменте я получаю с помощью onActivityResult
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
binding.cross1.setVisibility(View.VISIBLE);
Uri uri = data.getData();
String uriString = uri.toString();
File myFile = new File(uriString);
parseFiles[0] = (new ParseFile(myFile));
String displayName = null;
if (uriString.startsWith("content://")) {
Cursor cursor = null;
try {
cursor = getActivity().getContentResolver().query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
cursor.close();
}
} else if (uriString.startsWith("file://")) {
displayName = myFile.getName();
}
binding.file1.setText(displayName);
}
break;
case 2:
if (resultCode == RESULT_OK) {
binding.cross2.setVisibility(View.VISIBLE);
Uri uri = data.getData();
String uriString = uri.toString();
File myFile = new File(uriString);
parseFiles[1] = (new ParseFile(myFile));
String displayName = null;
if (uriString.startsWith("content://")) {
Cursor cursor = null;
try {
cursor = getActivity().getContentResolver().query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
cursor.close();
}
} else if (uriString.startsWith("file://")) {
displayName = myFile.getName();
}
binding.file2.setText(displayName);
}
break;
case 3:
if (resultCode == RESULT_OK) {
binding.cross3.setVisibility(View.VISIBLE);
Uri uri = data.getData();
String uriString = uri.toString();
File myFile = new File(uriString);
parseFiles[2] = (new ParseFile(myFile));
String displayName = null;
if (uriString.startsWith("content://")) {
Cursor cursor = null;
try {
cursor = getActivity().getContentResolver().query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
cursor.close();
}
} else if (uriString.startsWith("file://")) {
displayName = myFile.getName();
}
binding.file3.setText(displayName);
}
break;
}
}
И в своей деятельности я пытаюсь сохранить файлы parseFiles как таковые.
ArrayList<ParseFile> parseFiles = new ArrayList<>();
for (int i = 0; i < adapter.getFragmentJobSample().getParseFiles().length; i++) {
if (adapter.getFragmentJobSample().getParseFiles()[i] != null){
parseFiles.add(adapter.getFragmentJobSample().getParseFiles()[i]);
}
}
entity.put("fileOne", parseFiles.get(0));
entity.put("fileTwo", parseFiles.get(1));
entity.put("fileThree", parseFiles.get(2));
for (int i = 0; i < parseFiles.size(); i++) {
try {
parseFiles.get(i).save();
} catch (ParseException e) {
Toast.makeText(this, "e" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
// Saves the new object.
// Notice that the SaveCallback is totally optional!
entity.saveInBackground(e -> {
if (e == null) {
//Save was done
Toast.makeText(this, "success!", Toast.LENGTH_SHORT).show();
finish();
} else {
//Something went wrong
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Мне пришлось использовать .save (), потому что мне нужно сохранить сразу несколько файлов. Я думал, что использовать .saveInBackground () для этого нецелесообразно. Должен ли я использовать вместо этого .saveInBackground ()?
However, when I try to save the newly created parse files ..
Что такое файл синтаксического анализа? И вдруг вы экономите. Ok. Но тогда почему ты в теме про закачку говоришь? - person blackapps   schedule 07.03.2021File myFile = new File(uriString);
Нет смысла использовать класс File в вашем красивом uri. Посмотрите на значениеuriSting
. Пожалуйста скажи. - person blackapps   schedule 07.03.2021