如何在android中使用php上传mysql数据库中更大尺寸的图像

时间:2016-04-07 14:57:05

标签: php android

大家好我正在制作一个Android应用程序,使用php在mysql数据库中上传图像并且工作正常。应用程序将图像成功上传到数据库但问题是我只能上传更小尺寸的图像只能用kbs.I想要它以mbs上传图像。我尝试外翻但直到现在都没有用。有人帮我...  我在php上传图片的代码是:

 <?php



 if($_SERVER['REQUEST_METHOD']=='POST'){

    $photo= $_POST['photo'];
    $bookname=$_POST['bookname'];
            $phoneNumber=$_POST['phoneNumber'];
            $price=$_POST['price'];

    require_once('loginConnect.php');

    $sql ="SELECT id FROM images ORDER BY id ASC";

    $res = mysqli_query($con,$sql);

    $id = 0;

    while($row = mysqli_fetch_array($res)){
            $id = $row['id'];
    }



             $path = "uploads/$id.png";
    $actualpath = "http://www.bsservicess.com/photoUpload/$path";

    $sql = "INSERT INTO images (photo,bookname,phoneNumber,price) VALUES
  ('$actualpath','$bookname','$phoneNumber','$price')";

    if(mysqli_query($con,$sql)){
        file_put_contents($path,base64_decode($photo));
        echo "Successfully Uploaded";
    }

    mysqli_close($con);
}else{
    echo "Error";
}
?>

我上传图片的android活动是:

 package com.manali.vivek.userregistration;

  import android.app.ProgressDialog;
  import android.content.Intent;
  import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.MediaStore;
 import android.support.v7.app.ActionBarActivity;
 import android.util.Base64;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.Toast;

 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.HashMap;


public class image extends ActionBarActivity implements View.OnClickListener 
{

public static final String UPLOAD_URL =  
 "http://www.bsservicess.com/photoUpload/uploadImage.php";
public static final String UPLOAD_KEY = "photo";

private int PICK_IMAGE_REQUEST = 1;

private Button buttonChoose;
private Button buttonUpload;
private Button buttonView;

private ImageView imageView;

private Bitmap bitmap;

private Uri filePath;
    EditText et1, et2, et3;


    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_image);

    buttonChoose = (Button) findViewById(R.id.buttonChoose);
    buttonUpload = (Button) findViewById(R.id.buttonUpload);
    buttonView = (Button) findViewById(R.id.buttonViewImage);
    et1 = (EditText) findViewById(R.id.et1);
    et2 = (EditText) findViewById(R.id.et2);
    et3 = (EditText) findViewById(R.id.et3);
    imageView = (ImageView) findViewById(R.id.imageView);

    buttonChoose.setOnClickListener(this);
    buttonUpload.setOnClickListener(this);
    buttonView.setOnClickListener(this);




}

private void showFileChooser() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), 
    PICK_IMAGE_REQUEST);
}


protected void onActivityResult(int requestCode, int resultCode, Intent
 data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data
!= null && data.getData() != null) {

        filePath = data.getData();
        try {
            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),
        filePath);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public String getStringImage(Bitmap bmp) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 10, baos);
    byte[] imageBytes = baos.toByteArray();


    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
}


private void uploadImage() {


    class UploadImage extends AsyncTask<Bitmap, Void, String> {

        ProgressDialog loading;
        RequestHandler rh = new RequestHandler();

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(image.this, "Uploading Image",
  "Please wait...", true, true);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            loading.dismiss();
            Toast.makeText(getApplicationContext(), s, 
  Toast.LENGTH_LONG).show();
        }

        @Override
        protected String doInBackground(Bitmap... params) {

            Bitmap bitmap = params[0];
            String uploadImage = getStringImage(bitmap);
            String bookname = et1.getText().toString();
            String phoneNumber = et2.getText().toString();
            String price = et3.getText().toString();

            HashMap<String, String> data = new HashMap<>();
            data.put(UPLOAD_KEY, uploadImage);

            data.put(Fetch.BOOK_NAME, bookname);
            data.put(Fetch.PHONE_NUMBER, phoneNumber);
            data.put(Fetch.PRICE, price);


            String result = rh.sendPostRequest(UPLOAD_URL, data);

            return result;
        }

    }

    UploadImage ui = new UploadImage();

    ui.execute(bitmap);

 }


@Override
    public void onClick(View v) {
    if (v == buttonChoose) {
        showFileChooser();
    }
    if (v == buttonUpload) {
        uploadImage();
    }


    if (v == buttonView) {
        viewImage();
    }
}


private void viewImage() {
    startActivity(new Intent(image.this, Main.class));
}


  ///////toolbar

  }

1 个答案:

答案 0 :(得分:0)

您存储base64的列的数据类型是什么?尝试文本或blob ..也许文本太长,数据类型无法处理。只猜测