Я создаю приложение для Android, используя Java и PHP.
На одной странице я принимаю файлы от пользователя и включаю возможность загрузки одного или нескольких файлов с мобильного телефона. Здесь я попытался использовать Java и Volley на внешнем интерфейсе, а на стороне сервера я использую базу данных PHP и MySQL.
Приведенный ниже код работает нормально, когда мы загружаем изображения/файлы размером менее 500 КБ. Но когда мы пытаемся загрузить больше, появляется ошибка и невозможно загрузить.
Пожалуйста, дайте несколько советов по исправлению этой проблемы, окончательная оценка этого приложения будет 14-12- 2024.
MainActivity
import android.app.ProgressDialog;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
import android.provider.OpenableColumns;
import android.util.Base64;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AgreeEstiActivity extends AppCompatActivity {
private ImageView back_but;
private String user_id, action, url, clientcode, agree_doc_type;
private LinearLayout mainLayout, top_header, agest_title;
private ProgressDialog pDialog;
private TextView agreements, estimates;
private static final int PICK_FILES_REQUEST_CODE = 1;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
agreements = findViewById(R.id.agreements);
agreements.setOnClickListener(v -> openFileSelector());
}
private void fileUploadingLoader() {
pDialog = new ProgressDialog(AgreeEstiActivity.this);
pDialog.setMessage("Uploading your stuff... Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
private void openFileSelector() {
fileUploadingLoader();
agree_doc_type = "1";
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/*", "application/pdf"});
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(Intent.createChooser(intent, "Select PDF Files"), PICK_FILES_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_FILES_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
ArrayList fileUris = new ArrayList();
if (data.getClipData() != null) {
// Multiple files selected
int count = data.getClipData().getItemCount();
for (int i = 0; i < count; i++) {
fileUris.add(data.getClipData().getItemAt(i).getUri());
}
} else if (data.getData() != null) {
// Single file selected
fileUris.add(data.getData());
}
uploadFiles(fileUris);
}
}
private void uploadFiles(ArrayList fileUris) {
SessionHandler sessionHandler = new SessionHandler(getApplicationContext());
user_id = sessionHandler.getUserDetails().user_id;
JSONArray filesArray = new JSONArray();
for (Uri fileUri : fileUris) {
try {
JSONObject fileObject = new JSONObject();
fileObject.put("file_name", getFileName(fileUri));
fileObject.put("file_data", encodeFileToBase64(fileUri));
filesArray.put(fileObject);
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONObject jsonRequest = new JSONObject();
try {
jsonRequest.put("files", filesArray);
jsonRequest.put("action", "agreeUpload");
jsonRequest.put("engineer_id", user_id);
jsonRequest.put("client_id", clientcode);
jsonRequest.put("agree_doc_type", agree_doc_type);
} catch (JSONException e) {
e.printStackTrace();
}
String serverUrl = url;
JsonObjectRequest jsArrayRequest = new JsonObjectRequest
(Request.Method.POST, url, jsonRequest, new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
try {
if (response.getInt("status") == 1) {
pDialog.dismiss();
Log.d("TEMPUPLOAD", "Response: " + response.toString());
}
} catch (JSONException e) {
e.printStackTrace();
Log.d("TEMPUPLOAD", "Error: " + response.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pDialog.dismiss();
//Display error message whenever an error occurs
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(jsArrayRequest);
}
private String encodeFileToBase64(Uri fileUri) {
try (InputStream inputStream = getContentResolver().openInputStream(fileUri)) {
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
return Base64.encodeToString(bytes, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private String getFileName(Uri uri) {
String result = null;
if (uri.getScheme().equals("content")) {
try (Cursor cursor = getContentResolver().query(uri, null, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) {
result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
}
}
if (result == null) {
result = uri.getPath();
int cut = result.lastIndexOf('/');
if (cut != -1) {
result = result.substring(cut + 1);
}
}
return result;
}
}
phpPage.php
Подробнее здесь: https://stackoverflow.com/questions/792 ... -app-using
Реализация загрузки нескольких изображений/файлов из мобильного приложения Android Studio с использованием Java PHP. ⇐ JAVA
Программисты JAVA общаются здесь
1734008775
Anonymous
Я создаю приложение для Android, используя Java и PHP.
На одной странице я принимаю файлы от пользователя и включаю возможность загрузки одного или нескольких файлов с мобильного телефона. Здесь я попытался использовать Java и Volley на внешнем интерфейсе, а на стороне сервера я использую базу данных PHP и MySQL.
Приведенный ниже код работает нормально, когда мы загружаем изображения/файлы размером менее 500 КБ. Но когда мы пытаемся загрузить больше, появляется ошибка и невозможно загрузить.
Пожалуйста, дайте несколько советов по исправлению этой проблемы, окончательная оценка этого приложения будет 14-12- 2024.
[b]MainActivity[/b]
import android.app.ProgressDialog;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
import android.provider.OpenableColumns;
import android.util.Base64;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AgreeEstiActivity extends AppCompatActivity {
private ImageView back_but;
private String user_id, action, url, clientcode, agree_doc_type;
private LinearLayout mainLayout, top_header, agest_title;
private ProgressDialog pDialog;
private TextView agreements, estimates;
private static final int PICK_FILES_REQUEST_CODE = 1;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
agreements = findViewById(R.id.agreements);
agreements.setOnClickListener(v -> openFileSelector());
}
private void fileUploadingLoader() {
pDialog = new ProgressDialog(AgreeEstiActivity.this);
pDialog.setMessage("Uploading your stuff... Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
private void openFileSelector() {
fileUploadingLoader();
agree_doc_type = "1";
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/*", "application/pdf"});
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(Intent.createChooser(intent, "Select PDF Files"), PICK_FILES_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_FILES_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
ArrayList fileUris = new ArrayList();
if (data.getClipData() != null) {
// Multiple files selected
int count = data.getClipData().getItemCount();
for (int i = 0; i < count; i++) {
fileUris.add(data.getClipData().getItemAt(i).getUri());
}
} else if (data.getData() != null) {
// Single file selected
fileUris.add(data.getData());
}
uploadFiles(fileUris);
}
}
private void uploadFiles(ArrayList fileUris) {
SessionHandler sessionHandler = new SessionHandler(getApplicationContext());
user_id = sessionHandler.getUserDetails().user_id;
JSONArray filesArray = new JSONArray();
for (Uri fileUri : fileUris) {
try {
JSONObject fileObject = new JSONObject();
fileObject.put("file_name", getFileName(fileUri));
fileObject.put("file_data", encodeFileToBase64(fileUri));
filesArray.put(fileObject);
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONObject jsonRequest = new JSONObject();
try {
jsonRequest.put("files", filesArray);
jsonRequest.put("action", "agreeUpload");
jsonRequest.put("engineer_id", user_id);
jsonRequest.put("client_id", clientcode);
jsonRequest.put("agree_doc_type", agree_doc_type);
} catch (JSONException e) {
e.printStackTrace();
}
String serverUrl = url;
JsonObjectRequest jsArrayRequest = new JsonObjectRequest
(Request.Method.POST, url, jsonRequest, new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
try {
if (response.getInt("status") == 1) {
pDialog.dismiss();
Log.d("TEMPUPLOAD", "Response: " + response.toString());
}
} catch (JSONException e) {
e.printStackTrace();
Log.d("TEMPUPLOAD", "Error: " + response.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pDialog.dismiss();
//Display error message whenever an error occurs
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(jsArrayRequest);
}
private String encodeFileToBase64(Uri fileUri) {
try (InputStream inputStream = getContentResolver().openInputStream(fileUri)) {
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
return Base64.encodeToString(bytes, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private String getFileName(Uri uri) {
String result = null;
if (uri.getScheme().equals("content")) {
try (Cursor cursor = getContentResolver().query(uri, null, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) {
result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
}
}
if (result == null) {
result = uri.getPath();
int cut = result.lastIndexOf('/');
if (cut != -1) {
result = result.substring(cut + 1);
}
}
return result;
}
}
[b]phpPage.php[/b]
Подробнее здесь: [url]https://stackoverflow.com/questions/79275227/implementing-multiple-image-files-uploading-from-android-studio-mobile-app-using[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия