使用Android Studio Java将名称和图像从Android应用程序上传到MySQL数据库[已关闭]

waxmsbnn  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(132)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

2天前关闭。
Improve this question
我是Android Studio的初学者。我想从Android应用程序上传名称和图像到mySQL数据库。我使用Android Studio与Java语言。对于API,我使用Laravel。我需要应用程序级别和API的代码。请帮助我。
我已经尝试使用Multipart和base64编码-解码这么多次。但在这两种情况下,有这么多的错误。请提供使用Multipart的代码。

46scxncf

46scxncf1#

这样的事情是可以做的。这不是一个工作代码。但你肯定可以得到一个想法如何做到这一点。
Android应用程序,允许您使用Laravel API将图像和名称上传到MySQL数据库。代码由名为MainActivity的Activity类组成,其中包含选择图像,上传数据,并显示成功或错误消息。selectImage函数打开设备的图像库,并允许用户选择图像。当用户单击“上传”按钮。

public class MainActivity extends AppCompatActivity {

    private Button btnUpload;
    private ImageView imageView;
    private EditText editText;
    private final int IMG_REQUEST = 1;
    private Bitmap bitmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnUpload = findViewById(R.id.btn_upload);
        imageView = findViewById(R.id.image_view);
        editText = findViewById(R.id.edit_text);

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectImage();
            }
        });

        btnUpload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                uploadData();
            }
        });
    }

    private void selectImage() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, IMG_REQUEST);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == IMG_REQUEST && resultCode == RESULT_OK && data != null) {
            Uri path = data.getData();
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), path);
                imageView.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private void uploadData() {
        String name = editText.getText().toString().trim();

        String image = imageToString();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://your_api_url/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        Api api = retrofit.create(Api.class);

        Call<ResponseBody> call = api.uploadImage(name, image);

        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
            }
        });
    }

private String imageToString() {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
    byte[] imgBytes = byteArrayOutputStream.toByteArray();
    return Base64.encodeToString(imgBytes, Base64.DEFAULT);
}

相关问题