我尝试通过图库将服务器中的图像与名称DOB id等其他条目一起上传,除了php服务器中的图像以外,所有条目均已上传,我不明白我的错误在哪里,请帮忙。建议任何其他代码plz告诉我。
这是我的代码
Bitmap bitmapOrg = BitmapFactory.decodeFile(imageselectedPath1);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
// Resize the image
double width = bitmapOrg.getWidth();
double height = bitmapOrg.getHeight();
double ratio = 400 / width;
int newheight = (int) (ratio * height);
System.out.println("———-width" + width);
System.out.println("———-height" + height);
Log.d("width ", "width " + width);
Log.d("height ", "height " + height);
bitmapOrg = Bitmap.createScaledBitmap(bitmapOrg, 400,
newheight, true);
// Here you can define .PNG as well
bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 99, bao);
byte[] ba = bao.toByteArray();
String ba1 = Base64.encodeBytes(ba);
Log.d("uploading ", "uploading " + ba1);
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("user_id", mSignMessg));
nameValuePairs.add(new BasicNameValuePair("name", mname.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("dob", mbirthday.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("bio", mbio.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("sex", mSexValue));
nameValuePairs.add(new BasicNameValuePair("profile_status", "0"));
nameValuePairs.add(new BasicNameValuePair("location", mlocation.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("image", ba1));
Log.d("userfile", "userfile " + ba1);
// nameValuePairs.add(new BasicNameValuePair("image”, ba1));
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(
"http://iapptechnologies.com/snapic/profileXml.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.d("nameValuePairs", "nameValuePairs " + nameValuePairs);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
// print responce
outPut = EntityUtils.toString(entity);
Log.i("GET RESPONSE—-", outPut);
Log.d("GET RESPONSE—-", outPut);
// is = entity.getContent();
Log.e("log_tag ******", "good connection");
System.out.println("gudconection");
Log.d("god connection ", "gud connection ");
bitmapOrg.recycle();
} catch (Exception e) {
Log.e("logCatch block***",
"Error in http connection " + e.toString());
Log.d("log_catch block ******", "Error in http connection "
+ e.toString());
}
Log.d("image_name","image_name "+image_name);
最佳答案
以下代码将首先以分辨率压缩图像,然后设置MultiPart
实体并通过POST
方法通过Web发送数据。
BitmapFactory.Options options = new BitmapFactory.Options();
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = true;
// image path `String` where your image is located
BitmapFactory.decodeFile(imagePath, options);
int bitmapWidth = 400;
int bitmapHeight = 250;
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > bitmapHeight || width > bitmapWidth) {
if (width > height) {
inSampleSize = Math
.round((float) height / (float) bitmapHeight);
} else {
inSampleSize = Math.round((float) width / (float) bitmapWidth);
}
}
options.inJustDecodeBounds = false;
options.inSampleSize = inSampleSize;
// you can change the format of you image compressed for what do you
// want;
// now it is set up to 640 x 480;
Bitmap bmpScale = BitmapFactory.decodeFile(imagePath, options);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// CompressFormat set up to JPG, you can change to PNG or whatever you
// want;
bmpScale.compress(CompressFormat.JPEG, 100, bos);
byte[] data = bos.toByteArray();
MultipartEntity entity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("avatar", new ByteArrayBody(data,"pic.jpg"
));
//add your other name value pairs in entity.
for (int i = 0; i < nameValuePairs.size(); i++) {
entity.addPart(nameValuePairs.get(i).getName(), new StringBody(
nameValuePairs.get(i).getValue()));
}
httppost.setEntity(entity);
HttpResponse response = httpClient.execute(httppost);
编辑
哦..对不起,我忘了通知。
是的,有一个名为
httpmime-4.2.2
和httpclient.jar
的罐子。您可以从Apache Site下载它。只需解压缩包,您将得到
lib
目录。关于android - 尝试将图片上传到php服务器中,但可以发布。在Android中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14027882/