Java 图像未存储在android中使用缓冲区读取器的服务器上

Java 图像未存储在android中使用缓冲区读取器的服务器上,java,php,android,json,Java,Php,Android,Json,首先我将用户选择的图像转换为base64字符串,然后我将此图像发送到php服务器,在那里我没有得到完整的base64字符串。我不知道有什么问题 以下是代码:- File file = new File(imagepath); //encodeImagetoString convert image to base64 string encodeImagetoString(); //encodedString is a base64 string String imageString= e

首先我将用户选择的图像转换为base64字符串,然后我将此图像发送到php服务器,在那里我没有得到完整的base64字符串。我不知道有什么问题

以下是代码:-

 File file = new File(imagepath);
 //encodeImagetoString convert image to base64 string
 encodeImagetoString();
 //encodedString is a base64 string
 String imageString= encodedString; 
 EditText text= (EditText) rootView.findViewById(R.id.editText2);
 String shayaritext=text.getText().toString();
 Spinner mySpinner=(Spinner) rootView.findViewById(R.id.spinner1);
 String catValue = mySpinner.getSelectedItem().toString();
 UserFunctions userFunction = new UserFunctions();
 json = userFunction.uploadShayariData(shayariName,catValue,shayaritext, imageString);
上传Shayaridata函数:-

 @SuppressWarnings({ "deprecation", "deprecation" })
public JSONObject uploadShayariData(String name,String catValue,String shayaritext,String image){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", shayariUpload));
    params.add(new BasicNameValuePair("cat", catValue));
    params.add(new BasicNameValuePair("title", name));
    params.add(new BasicNameValuePair("data", shayaritext));
    params.add(new BasicNameValuePair("image", image));

    // getting JSON Object
    JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);
    // return json
    return json;
    }

您可以通过一个多部分post请求来实现这一点:这样,您就不需要创建json

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(serverURL);
MultipartEntity postEntity = new MultipartEntity();
File file = new File("Your File path on SD card");
postEntity.addPart("fileupload", new FileBody(file, "image/jpeg"));
postEntity.addPart("loginKey", new StringBody(""+loginKey));
postEntity.addPart("message", new StringBody(message));
postEntity.addPart("token", new StringBody(token));
post.setEntity(postEntity);
response = client.execute(post);

您必须添加这个mime4j库

使用multipart insted但我打印$image3,它不是一个完整的JSON字符串是的,我们可以使用multipart实体,但我的应用程序上的大部分代码都是用JSON编写的,并在服务器上处理,所以如果我使用multipart,我需要更改大部分代码。我不明白,我的建议是,如果您想要一个稳定的解决方案,通过json发布像图像和文件这样的大数据,那么它不是为这个设计的。如果您唯一的选择是json,那么看看这个:我更新了我的代码以进行测试。现在它正在使用另一个代码。谢谢
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(serverURL);
MultipartEntity postEntity = new MultipartEntity();
File file = new File("Your File path on SD card");
postEntity.addPart("fileupload", new FileBody(file, "image/jpeg"));
postEntity.addPart("loginKey", new StringBody(""+loginKey));
postEntity.addPart("message", new StringBody(message));
postEntity.addPart("token", new StringBody(token));
post.setEntity(postEntity);
response = client.execute(post);