文件上传到服务器时的Android eclipse错误 [英] Android eclipse error on File upload to server

查看:22
本文介绍了文件上传到服务器时的Android eclipse错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆