【问题标题】:Not Posting image file in android using multipart httppost method不使用多部分httppost方法在android中发布图像文件
【发布时间】:2013-05-12 10:52:53
【问题描述】:

这个问题是从same question借来的,因为我遇到了同样的问题。在服务器端发布图像时,图像细节无法进入服务器端。像这样:

上传图片文件信息php服务器失败,userid ok但图片文件信息无法上传。在这种情况下,图片保存在服务器成功,我无法获取图片的php服务器信息。

代码如下:

公共类 UploadImageHttpPost {

String testpath="/mnt/sdcard/14111.jpg";
String url = "http://andtuts.com/uploadImage.php";

public static void sendPost(String url, String imagePath,String userId)
        throws IOException, ClientProtocolException {
     String responseBody;

    MultipartEntity entity = new MultipartEntity(
            HttpMultipartMode.BROWSER_COMPATIBLE);

    File file = new File(imagePath);
    FileBody encFile = new FileBody(file,"image/jpeg");
    entity.addPart("images", encFile);
    entity.addPart("UserId", new StringBody(userId));
    HttpPost request = new HttpPost(url);
    request.setEntity(entity);

    HttpClient client = new DefaultHttpClient();

    ResponseHandler<String> responsehandler = new BasicResponseHandler();
    responseBody = client.execute(request, responsehandler);

    if (responseBody != null && responseBody.length() > 0) {
        Log.w("TAG", "Response from image upload->" + responseBody);

    }
}

我是这样的:

Array
(
    [UserId] => 1
)

我在 php 中使用它进行测试的地方,来自多部分:

$filedata = $_FILES['images'];
$f = fopen(time().".txt",'wb');
fwrite($f, print_r($_REQUEST,true));
fclose($f);

但是下面的部分丢失意味着我没有得到,多部分发布方法中是否有任何丢失的代码请检查上面的java代码:

[images] => Array
        (
            [name] => ball.png
            [type] => image/png
            [tmp_name] => /tmp/phpiQHIXQ
            [error] => 0
            [size] => 1664972
        )

我也关注本教程:[http://www.webspeaks.in/2012/08/upload-files-from-android-to-server.html][2]

[2]:http://www.webspeaks.in/2012/08/upload-files-from-android-to-server.html 和许多其他来自 google,但找不到合适的解决方案。

【问题讨论】:

    标签: android image-uploading multipartform-data


    【解决方案1】:

    我最近和你的问题一样 这是解决方案:

    从 SD 卡和相机拍摄的图像:

    @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            Bitmap scaledphoto = null;
            int height = 100;
            int width = 100;
            if (resultCode == RESULT_OK) {
                if (requestCode == SD_REQUEST) {
                    Uri selectedImageUri = data.getData();
                    selectedImagePath = getPath(selectedImageUri);
                    yourSelectedImage = BitmapFactory.decodeFile(selectedImagePath);
                    scaledphoto = Bitmap.createScaledBitmap(yourSelectedImage,
                            height, width, true);
                    pImage.setImageBitmap(scaledphoto);
    
                    Uri selectedImageUri1 = data.getData();
                    path = getRealPathFromURI(selectedImageUri1);
    
    
                }
                if (requestCode == CAMERA_REQUEST) {
                    yourSelectedImage = (Bitmap) data.getExtras().get("data");
                    scaledphoto = Bitmap.createScaledBitmap(yourSelectedImage,
                            height, width, true);
                    profImage.setImageBitmap(scaledphoto);
                    Uri selectedImageUri1 = data.getData();
                    path = getRealPathFromURI(selectedImageUri1);
    
                }
            }
    

    现在你调用你要上传图片的函数:

        String url="http://test.com/uploadimage.php";
        //path is the defined, which is take from camera and sdcard.
       // userid is, which user do you want upload picture.
        UploadImageHttp.sendPost(url, path, userId);
    

    这是上传图片的类别:

    public class UploadImageHttp {
    public static void sendPost(String url, String imagePath,String userId)
            throws IOException, ClientProtocolException {
    
        String responseBody;
        HttpClient client = new DefaultHttpClient();
        HttpPost request = new HttpPost(url);
    
        MultipartEntity entity = new MultipartEntity(
                HttpMultipartMode.BROWSER_COMPATIBLE);
    
        File file = new File(imagePath);
        ContentBody encFile = new FileBody(file,"image/png");
    
        entity.addPart("images", encFile);
        entity.addPart("UserId", new StringBody(userId));
    
        request.setEntity(entity);
    
    
    
        ResponseHandler<String> responsehandler = new BasicResponseHandler();
        responseBody = client.execute(request, responsehandler);
    
    
        if (responseBody != null && responseBody.length() > 0) {
            Log.w("TAG", "Response image upload" + responseBody);
    
        }
    }
    

    希望您对这段代码感到满意。我运行成功。

    【讨论】:

    猜你喜欢
    • 2017-03-05
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多