Реализация загрузки нескольких изображений/файлов из мобильного приложения Android Studio с использованием Java PHP.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Реализация загрузки нескольких изображений/файлов из мобильного приложения Android Studio с использованием Java PHP.

Сообщение Anonymous »

Я создаю приложение для Android, используя Java и PHP.
На одной странице я принимаю файлы от пользователя и включаю возможность загрузки одного или нескольких файлов с мобильного телефона. Здесь я попытался использовать Java и Volley на внешнем интерфейсе, а на стороне сервера я использую базу данных PHP и MySQL.
Приведенный ниже код работает нормально, когда мы загружаем изображения/файлы размером менее 500 КБ. Но когда мы пытаемся загрузить больше, появляется ошибка и невозможно загрузить.
Пожалуйста, дайте несколько советов, как это исправить.
< strong>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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»