0

Android アプリケーションからサーバーに画像をアップロードしています。

電話では、アップロード後の画像サイズは 1.5MB です。画像のサイズは 250KB です。

画像の幅と高さは変わりません

    AsyncHttpClient client = new AsyncHttpClient();
    File myFile = new File(imagePath);
    RequestParams params = new RequestParams();
    try {
        params.put("img", myFile);
        params.put("key1", request.getText().toString());
    } catch(FileNotFoundException e) {
        Log.d("MyApp", "File not found!!!" + imagePath);
    }
    client.post(url, params, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(String response) {
            answer.setText(response);
        }

        @Override
        public void onStart() {
        super.onStart();
        }

        @Override
        public void onFailure(Throwable arg0, String arg1) {
        super.onFailure(arg0, arg1);
        Log.d("MyApp", arg0.getMessage().toString());
        }

    });

サーバーでは、以下のサーブレット コードを使用して画像を取得しています。

    Part part = request.getPart("key1");
    Part img = request.getPart("img");
    if (part!=null && img!=null){
        String name = getValue(part);
        InputStream is = img.getInputStream();
        BufferedImage bufImage = ImageIO.read(is); 
        ImageIO.write(bufImage, "jpg", new File("c:/file_"+name+".jpg"));
        out.println(name + " I got your image ");
    } else {
        out.println("image upload failed");
    }
    out.flush();
    out.close();

ありがとう

4

1 に答える 1

0

私は解決策を見つけました、問題はサーブレットにありました、以下は解決策です

Part fName = request.getPart("name");
Part img = request.getPart("img");
if (fName!=null && img!=null){
    String name = getValue(fName);
    InputStream is = img.getInputStream();
    OutputStream o = new FileOutputStream("c:/file_"+name+".jpg"); 
    copy(is, o); //The function is below 
    o.flush(); 
    o.close(); 
    out.println(name + " I got your image ");
} else {
    out.println("image upload failed");
}
out.flush();
out.close();

public static long copy(InputStream input, OutputStream output) throws IOException { 
    byte[] buffer = new byte[4096]; 

    long count = 0L; 
    int n = 0; 

    while (-1 != (n = input.read(buffer))) { 
        output.write(buffer, 0, n); 
        count += n; 
    } 
    return count; 
} 
于 2012-09-20T07:58:18.963 に答える