android-使用MultipartEntity图片上传

问题描述

使用MultipartEntity图片上传

使用MultipartEntity上传单张图片。用了下面的代码,但是图片没有上传,也没有任何错误提示。

我将所有的数据库都加载了。

 try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost postRequest = new HttpPost(
                    "http://192.168.1.6/uploadimg.php");
            httpClient.getParams().setParameter(
                    CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
            File f = null;
            FileBody fo = null;
            MultipartEntity reqEntity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);
            // code for send image using post method
            f = new File("/mnt/sdcard/a.png");
            fo = new FileBody(f);
            reqEntity.addPart("uploaded", fo);
            Log.i("uploaded", "image added Parameter added");
            postRequest.setEntity(reqEntity);
            HttpResponse response = httpClient.execute(postRequest);
            BufferedReader reader = new BufferedReader(new InputStreamReader(
            response.getEntity().getContent(), "UTF-8"));
            String sResponse;
            StringBuilder s = new StringBuilder();

            while ((sResponse = reader.readLine()) != null) {
                s = s.append(sResponse);
            }
            Log.v("Upload photo", "Response" + s);
            // return getUploadResponce(s.toString());
            // Log.i("Response ", );
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

PHP 文件:

<?php

$file = $_FILES['uploaded']

move_uploaded_file($_FILES['uploaded']['tmp_name'], $_FILES['uploaded']['name']);

            ?>

解决方案

看看服务器的临时目录的权限,ls -l 你的服务器文件移动到的目录,php默认是root的权限,所以可以看下临时目录中是否有上传的文件,如果有,说明是移动文件到目标目录的权限问题;如果临时目录都没有文件,说明是上传代码的问题。

解决方案二:

看看服务器的临时目录的权限,ls -l 你的服务器文件移动到的目录,php默认是root的权限,所以可以看下临时目录中是否有上传的文件,如果有,说明是移动文件到目标目录的权限问题;如果临时目录都没有文件,说明是上传代码的问题。

解决方案三:

项目中的一个方法,仅供参考
KeyValue 是一个只有key和value的基础类,values中是存储所有要发送的文件的地址【ArrayList】

/**
 * 发送文件和基础数据
 *
 * @param netpath
 * @return
 */
@SuppressWarnings("rawtypes")
public boolean sendForm(String netpath) {

    String path = netpath;
    boolean res = false;
    try {

        HttpPost httpPost = new HttpPost(path);

        MultipartEntityBuilder entityBuilder = MultipartEntityBuilder
                .create();

        // 设置为浏览器兼容模式
        entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        // 设置请求的编码格式
        // entityBuilder.setCharset(Charset.forName(HTTP.UTF_8));
        entityBuilder.setCharset(Charset.forName(HTTP.UTF_8));

        for (KeyValue keyValue : beanData.getKeyvalues()) {
            entityBuilder.addTextBody(
                    keyValue.getKey(),
                    keyValue.getValue(),
                    ContentType.create("text/plain",
                            Charset.forName(this.charset)));
        }
        // Iterator it = paths.entrySet().iterator();
        // while(it.hasNext()){
        // Entry entry = (Entry) it.next();
        // entityBuilder.addBinaryBody("file", new File((String)
        // entry.getValue()));
        // paths.remove(entry.getKey());
        // }
        for (int i = 0; i < values.size(); i++) {
            entityBuilder.addBinaryBody("file", new File(values.get(i)));
        }

        httpPost.setEntity(entityBuilder.build());
        // httpPost.setHeader("Content-type", "text/html;charset=UTF-8");
        HttpResponse response = new DefaultHttpClient().execute(httpPost);
        if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            res = true;
            resultString = EntityUtils.toString(response.getEntity(),
                    HTTP.UTF_8);
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return res;
}

解决方案四:

看看服务器的临时目录的权限?

时间: 2024-07-31 11:52:02

android-使用MultipartEntity图片上传的相关文章

Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 微信 下载地址 : 微信上传图片源码 很多网友不知道怎么获取图片路径,这里贴出来: String path = Bimp.tempSelectBitmap.get(position).getImagePath(); //部分代码如下 package com.king.photo.activity;

android web中图片上传 错误

问题描述 做一个web聊天 在android上传图片失败 解决方案 失败,报什么错解决方案二:android中在微信中上传图片失败,失败信息是:上传文件失败解决方案三:http://www.imgeek.org/question/5876    看看这个

Android拍照且将图片上传至服务器

MainActivity如下: package cc.cn; import java.io.File; import java.io.IOException; import cc.cn.UploadImageThread.UploadImageListener; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; im

在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传

通过构造基于 HTTP 协议的传输内容实现图片自动上传到服务器功能 .如果自己编码构造 HTTP 协议,那么编写的代码质量肯定不高,建议模仿 HttpClient .zip examples\mime\ClientMultipartFormPost.java 来实现,并通过源码来进一步理解如何优雅高效地构造 HTTP 协议传输内容.   自己构造 HTTP 协议传输内容的想法,从何而来呢?灵感启迪于这篇博文"Android下的应用编程--用HTTP协议实现文件上传功能 ",以前从未想过

服务器-Android多图片上传会发生覆盖问题

问题描述 Android多图片上传会发生覆盖问题 我写了一个多图片上传的小程序,选出的图片存在List集合里,然后通过for循环发送到服务器里.可是却发生了收到都是最后一张图片,这该怎么解决!求大神相助!!!!!!!!!!!!!!!!!!!! 解决方案 应该是服务器那边的问题,服务器在每个上传的图片都应该保存到不同的文件名上 解决方案二: 服务器那边没处理好... 解决方案三: 访问网络是一个耗时的操作,程序会优先处理UI主线程,执行完for语句之后再跳转到子线程去请求服务器,于是乎...每次都

android相机拍照后上传到指定文件夹,opencv是通过调用文件夹里图片进行处理的吗?

问题描述 android相机拍照后上传到指定文件夹,opencv是通过调用文件夹里图片进行处理的吗? 现在有一个Android拍照上传到指定文件夹的程序和一个opencv图像匹配的程序,能否通过修改某些语句和配置环境可以将两者结合?如果可以求大神赐教!(opencv是在文件夹选取图片进行匹配的.) 解决方案 可以直接调用文件夹里的图片处理,配置的话把路径配置成相对路径就可以了

android 图片上传 服务器接收图片方法代码

问题描述 android 图片上传 服务器接收图片方法代码 求android 批量图片上传 服务器接收,代码,最好有详细解释,万分感谢jackcathy369@163.com 解决方案 http://programmerguru.com/android-tutorial/how-to-upload-image-to-java-server/......答案就在这里:Android 上传图片,服务器接收图片实现 解决方案二: http://blog.csdn.net/y150481863/arti

图片-Android用post方式上传到服务器的问题?

问题描述 Android用post方式上传到服务器的问题? 我在做一个图片上传的功能,后台是C++写的,给了一个图片上传的地址,用Post方式上传,给了我两个参数,FileData:表示图片的byte[]:FileName:表示图片的名字:后台取图片的数据流时,是根据FileData这个参数取的,就是跟那种键值对应的方式,我怎样才能把这个FileData和FileName传过去?让后台取的时候可以得到对应的byte[]和图片名字, 解决方案 你先传FileName以及name长度,然后传图片长度

Android图片上传实现预览效果_Android

首先具体分析一下,实现的功能,其中需求分析是必不可少的,需求.逻辑清除之后,再上手写代码,思路会很清晰. 1.多图上传首先得选择图片(这里项目需求是既可以拍照上传也可以从相册中选择) 2.拍照上传很简单了网上也有很多例子,调用照相机,返回uri,获取图片 3.从相册中选择图片  3.1 获取手机中的所有图片  3.2 将图片存到自定义图片数组中显示  3.3 自定义ViewPager浏览图片 主要的逻辑大体是这样,下面具体看一下实现: 一.首先看一下界面: <com.view.NoScrollG