文件上传到服务器时的Android eclipse错误 [英] Android eclipse error on File upload to server
问题描述
在我的 android eclipse 项目中,我想将带有名称和电子邮件字段的图像文件上传到服务器.
In my android eclipse project, i want to upload image file with name and email fields to server.
但我收到以下错误:我的 logcat 如下:
But i got the following error : my logcat is following :
NoSuchFieldError - BasicHeaderValueFormatter.INSTANCE
E/AndroidRuntime(25348): Caused by: java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE
我的整个 logcat:
my entire logcat :
E/AndroidRuntime(25348): FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime(25348): Process: com.example.uploadfiles, PID: 25348
E/AndroidRuntime(25348): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(25348): at android.os.AsyncTask$3.done(AsyncTask.java:300)
E/AndroidRuntime(25348): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime(25348): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime(25348): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(25348): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime(25348): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(25348): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime(25348): at java.lang.Thread.run(Thread.java:841)
E/AndroidRuntime(25348): Caused by: java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE
E/AndroidRuntime(25348): at org.apache.http.entity.ContentType.toString(ContentType.java:153)
E/AndroidRuntime(25348): at org.apache.http.entity.mime.MultipartFormEntity.<init>(MultipartFormEntity.java:52)
E/AndroidRuntime(25348): at org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:226)
E/AndroidRuntime(25348): at org.apache.http.entity.mime.MultipartEntityBuilder.build(MultipartEntityBuilder.java:230)
E/AndroidRuntime(25348): at com.example.uploadfiles.MainActivity$ImageUploadTask.doInBackground(MainActivity.java:172)
E/AndroidRuntime(25348): at com.example.uploadfiles.MainActivity$ImageUploadTask.doInBackground(MainActivity.java:1)
E/AndroidRuntime(25348): at android.os.AsyncTask$2.call(AsyncTask.java:288)
E/AndroidRuntime(25348): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(25348): ... 4 more
我上传图片的代码和一些字段如下:
My code for uploading image and some fields are following :
class ImageUploadTask extends AsyncTask<Void, Void, String> {
@SuppressWarnings("deprecation")
@Override
protected String doInBackground(Void... unsued) {
try {
File image = new File(iPath);
FileBody fileBody = new FileBody(image);
HttpClient client = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost post = new HttpPost(Constant.signUp);
post.setHeader("enctype", "multipart/form-data");
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("ID", new StringBody("1"));
multipartEntity.addPart("pID", new StringBody("1"));
multipartEntity.addPart("userPhoto", fileBody);
multipartEntity.addPart("email", new StringBody("joseph@gmail.com"));
multipartEntity.addPart("cell", new StringBody("1234567890"));
multipartEntity.addPart("username", new StringBody("joseph"));
post.setEntity(multipartEntity.build());
// post.setEntity((MultipartEntityBuilder) multipartEntity);
HttpResponse response = client.execute(post, localContext);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),
"UTF-8"));
HttpResponse responses = client.execute(post);
String responseBody = EntityUtils.toString(response.getEntity());
Log.v("multiPartPost HTTP Response", responseBody);
} catch (Exception e) {
System.out.println("error=" + e.getMessage());
return null;
}
return "";
}
@Override
protected void onProgressUpdate(Void... unsued) {
}
@Override
protected void onPostExecute(String sResponse) {
try {
if (sResponse != null) {
JSONObject JResponse = new JSONObject(sResponse);
int success = JResponse.getInt("SUCCESS");
String message = JResponse.getString("MESSAGE");
if (success == 0) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Photo uploaded successfully", Toast.LENGTH_SHORT)
.show();
caption.setText("");
}
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "excepttion", Toast.LENGTH_LONG).show();
Log.e(e.getClass().getName(), e.getMessage(), e);
}
}
}
我的 libs 文件夹有以下必要的库:
My libs folder have following necessary libraries :
在我的 java 构建路径中:
And in my java build path :
并在属性中的订单导出
现在我必须做些什么来解决这个错误:我一整天都在努力解决这个问题,但没有,所以请任何人建议我如何解决这个错误,非常感谢,谢谢.
Now i what have to do to solve this error : i working entire day for solving this but not, so please any one suggest me to how to solve this error, it very appreciated, thank you.
推荐答案
这是libs的主要问题.,所有可能面临的,错误的库导致这个问题,
This is main problem of libs., that all might faced, wrong library causes this issue,
因此,以下步骤对您有帮助:
So, following step helpful to you :
(1) 代码:以下代码成功上传照片到服务器:
(1) Code : Following code is successfully upload photo to the server :
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (Constant.bitmapPicture != null) {
StoreByteImage(Constant.bitmapPicture, 90, "my_image");
} else {
Toast.makeText(getApplicationContext(), "image null", Toast.LENGTH_LONG).show();
}
}
});
StoreByteImage(...) :
StoreByteImage(...) :
public boolean StoreByteImage(Bitmap bitmap, int quality, String expName) {
FileOutputStream fileOutputStream = null;
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File myNewFolder = new File(extStorageDirectory + "/Example");
if (myNewFolder.mkdirs()) {
myNewFolder.mkdir();
}
try {
iPath = myNewFolder + "/" + expName + ".jpg";
fileOutputStream = new FileOutputStream(myNewFolder + "/" + expName + ".jpg");
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
bitmap.compress(CompressFormat.JPEG, quality, bos);
new ImageUploadTask().execute();
bos.flush();
bos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
类 ImageUploadTask
Class ImageUploadTask
class ImageUploadTask extends AsyncTask<Void, Void, String> {
String sResponse;
@SuppressWarnings("deprecation")
@Override
protected String doInBackground(Void... unsued) {
try {
//
File image = new File(iPath);
FileBody fileBody = new FileBody(image);
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(YourImageUploadURLHere);
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Constant.bitmapPicture.compress(CompressFormat.JPEG, 100, bos);
byte[] data = bos.toByteArray();
entity.addPart("ID", new StringBody("1"));
entity.addPart("pID", new StringBody("1"));
entity.addPart("userPhoto", fileBody);
entity.addPart("email", new StringBody("email@gmail.com"));
entity.addPart("cell", new StringBody("1234567890"));
entity.addPart("username", new StringBody("name"));
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost, localContext);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),
"UTF-8"));
sResponse = reader.readLine();
System.out.println("responce=" + sResponse);
} catch (Exception e) {
System.out.println("error=" + e.getMessage());
return null;
}
return "";
}
@Override
protected void onProgressUpdate(Void... unsued) {
}
@Override
protected void onPostExecute(String sResponses) {
try {
if (sResponses != null) {
JSONObject jsonObjSend = new JSONObject(sResponse.toString());
if (jsonObjSend.getString("status").equals("success")) {
// another code
} else if (jsonObjSend.getString("status").equals("fail")) {
// another code
}
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "excepttion", Toast.LENGTH_LONG).show();
Log.e(e.getClass().getName(), e.getMessage(), e);
}
}
}
(2) 首先从你的 libs 文件夹中删除所有的 libs/jar 文件:
(2) First Remove All libs/jar file from the your libs Folder :
(3) 从网上找到以下libraries/jar 文件并放入libs 文件夹:
(3) Find Following libraries/jar file from the internet and put in libs folder :
(4) 从库选项卡添加 jar :
(4) Add jar from the libraries tab :
(5) 您的订单和导出库/jar 文件 打勾标记如下:
(5) Your Order and Export libraries/jar file Tick mark same as following :
好的,完成.只是这些简单的步骤有助于您将图像文件上传到服务器.希望这些对您和其他人有所帮助.
Ok, Done. Just these simple steps helpful to you upload image file to server. hope these helphul to you and others.
这篇关于文件上传到服务器时的Android eclipse错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!