Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓使用改装post方法向服务器发送照片_Android_Android Image_Android Networking - Fatal编程技术网

Android 安卓使用改装post方法向服务器发送照片

Android 安卓使用改装post方法向服务器发送照片,android,android-image,android-networking,Android,Android Image,Android Networking,大家好,首先我是android和stack overflow的新手。我需要的是从摄像头捕获图像并发送到php服务器 用于捕捉我使用的图像 Intent photo= new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(photo, 0); protected void onActivityResult(int requestCode, int resultCod

大家好,首先我是android和stack overflow的新手。我需要的是从摄像头捕获图像并发送到php服务器

用于捕捉我使用的图像

    Intent photo= new Intent("android.media.action.IMAGE_CAPTURE");
            startActivityForResult(photo, 0);

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0 && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
         imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
        delete.setVisibility(View.VISIBLE);
        button.setVisibility(View.INVISIBLE);
        image = ConvertBitmapToString(imageBitmap);

    }
}

//method to convert the selected image to base64 encoded string//////////////
public String ConvertBitmapToString(Bitmap bitmap){

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 25, byteArrayOutputStream);

    String encodedImage= null;
    try {
        encodedImage = URLEncoder.encode(Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT), "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    return encodedImage;
}
我的问题是映像在服务器中不可见

服务器连接

      public interface SaveAPI {
     @FormUrlEncoded
    @POST("/example.php")
public void insertUser(
        @Field("username") String name,
        @Field("coname") String cname,
        @Field("location") String location,
        @Field("ddate") String date,
        @Field("dracc") String daccnt,
        @Field("cracc") String cccnt,
        @Field("amount") String samt,
        @Field("narr") String snarration,
        @Field("bill") String image,
        Callback<Response> callback);

     }
   private void insertUser() {
    //Here we will handle the http request to insert user to mysql db
    //Creating a RestAdapter
        RestAdapter adapter = new RestAdapter.Builder()
            .setEndpoint(SAVE_URL) //Setting the Root URL
            .build();
       SaveAPI api = adapter.create(SaveAPI.class);
       api.insertUse r(
            name,
            sCname.getSelectedItem().toString(),
            loc,
            tdate,
            sdamount.getSelectedItem().toString(),
            scamount.getSelectedItem().toString(),
            amt.getText().toString(),
            narration.getText().toString(),
            image,
            new Callback<Response>() {
                @Override
                public void success(Response result, Response response) {
                    //On success we will read the server's output using 
            bufferedreader
                    //Creating a bufferedreader object
                    BufferedReader reader = null;

                    //An string to store output from the server
                    String output = "";

                    try {
                        //Initializing buffered reader
                        reader = new BufferedReader(new 
                    InputStreamReader(result.getBody().in()));

                        //Reading the output in the string
                        output = reader.readLine();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    //Displaying the output as a toast
                    Toast.makeText(ExpenseActivity.this, output, 
              Toast.LENGTH_LONG).show();
                }

                @Override
                public void failure(RetrofitError error) {
                    Toast.makeText(ExpenseActivity.this, error.toString(), 
               Toast.LENGTH_LONG).show();

                }

              }
          );
        }
公共接口SaveAPI{
@FormUrlEncoded
@POST(“/example.php”)
公共空隙插入器(
@字段(“用户名”)字符串名称,
@字段(“coname”)字符串cname,
@字段(“位置”)字符串位置,
@字段(“ddate”)字符串日期,
@字段(“dracc”)字符串daccnt,
@字段(“CRAC”)字符串cccnt,
@字段(“金额”)字符串samt,
@字段(“narr”)字符串排列,
@字段(“票据”)字符串图像,
回调(回调);
}
私有void insertUser(){
//这里我们将处理将用户插入mysql数据库的http请求
//创建重新适应程序
RestAdapter adapter=new RestAdapter.Builder()
.setEndpoint(SAVE_URL)//设置根URL
.build();
SaveAPI=adapter.create(SaveAPI.class);
api.insertUse r(
名称
sCname.getSelectedItem().toString(),
loc,
tdate,
sdamount.getSelectedItem().toString(),
scamount.getSelectedItem().toString(),
amt.getText().toString(),
description.getText().toString(),
形象,,
新回调函数(){
@凌驾
public void成功(响应结果、响应){
//成功后,我们将使用
缓冲读取器
//创建bufferedreader对象
BufferedReader reader=null;
//用于存储服务器输出的字符串
字符串输出=”;
试一试{
//初始化缓冲读取器
读卡器=新的BufferedReader(新的
InputStreamReader(result.getBody().in());
//读取字符串中的输出
输出=reader.readLine();
}捕获(IOE异常){
e、 printStackTrace();
}
//将输出显示为toast
Toast.makeText(ExpenseActivity.this,输出,
Toast.LENGTH_LONG).show();
}
@凌驾
公共无效失败(错误){
Toast.makeText(ExpenseActivity.this,error.toString(),
Toast.LENGTH_LONG).show();
}
}
);
}

事实上,我正在向服务器发送9个数据,除了服务器上显示的所有图像,任何人都可以提供问题的解决方案。提前感谢

首先检查转换后的图像作为字符串是否返回数据,以及该响应是否是您打算通过再次将其转换为图像获得的有效响应。

首先,调试应用程序,并检查图像是否转换为base64。如果转换正确并将其发送到服务器,则问题出在服务器上。请调试您的项目并告诉发生了什么。请输入服务器代码中绑定数据的部分

现在我的图像对话工作正常了

    public String ConvertBitmapToString(Bitmap bitmap)throws 
    FileNotFoundException {
    BitmapFactory.Options options = null;
    options = new BitmapFactory.Options();
    options.inSampleSize = 3;
    ByteArrayOutputStream byteArrayOutputStream = new 
    ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG,40, byteArrayOutputStream);
    byte[] byteArrayImage = byteArrayOutputStream.toByteArray();
    String encodedImage = 
    Base64.encodeToString(byteArrayImage,Base64.DEFAULT);
    return encodedImage;
   }

ConvertBitmapToString返回一些数据或null?首先需要检查问题出在哪里。可能是您没有正确获取映像,映像没有正确转换,或者您对服务器的调用有错误。一旦你知道你可以自己找到解决方案或寻求帮助。是的,巴迪返回一些数据,但它没有显示……。我想我在图像对话中遇到了一个问题…如何解决这个问题你是否检查了这篇文章以进行转换:尝试这两种方法获取img uri:如果你是从gallery中提取的,显然,你可以得到它的文件路径uri.bro我在图像对话中有一个问题,但是我在所有的互联网站点上都得到了相同的图像对话代码。我大约两年前用过它,一切都正常