2 sleepheader SleepHeader 于 2016.04.20 19:36 提问

关于Okhttp无法上传图片到django 服务器上,哪位大神知道怎么回事,烦请告知! 1C
 private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("application/x-jpg");
public static final MediaType MEDIA_TYPE_MP4 = MediaType.parse("video/mp4");

MultipartBuilder builder = new MultipartBuilder("*****").type(MultipartBuilder.FORM);
for (final PhotoThumbnail thumbnail : dataSet) {
MediaType type = thumbnail.getType() == PhotoThumbnail.TYPE_PICTURE ? MEDIA_TYPE_PNG : MEDIA_TYPE_MP4;
builder.addFormDataPart("upload", null, RequestBody.create(type, new File(thumbnail.getPath())));
}

    RequestBody requestBody = builder.build(); // be carefor build() must be after addFormDataPart();
    final Request request = new Request.Builder()
            .url(url)//地址
            .post(requestBody)//添加请求体
            .build();
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Request request, IOException e) {
            System.out.println("request = " + request.urlString());

        }

        @Override
        public void onResponse(Response response) throws IOException 
            String responseContent = response.body().string();// must be care for only can read one
            try {
                JSONObject object = new JSONObject(responseContent);
                String result = object.getString("result");
                String code = object.getString("error_code");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });

            经过测试,在JavaEE服务器上可以正确上传图片,但是在django 服务器上却无法正确获取图片,后来把客户端改成
             /* 上传文件至Server的方法 */
private static void uploadFile(String path)
{
    String end ="\r\n";
    String twoHyphens ="--";
    String boundary ="*****";
    try
    {
        URL url =new URL(ParameterConstant.BASE_URL);
        HttpURLConnection con=(HttpURLConnection) url.openConnection();
      /* 允许Input、Output,不使用Cache */
        con.setDoInput(true);
        con.setDoOutput(true);//允许输出流,即允许上传
        con.setUseCaches(false); //不使用缓冲
      /* 设置传送的method=POST */
        con.setRequestMethod("POST");
      /* setRequestProperty */
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Charset", "UTF-8");
        con.setRequestProperty("Content-Type",
                "multipart/form-data;boundary="+boundary);
      /* 设置DataOutputStream */
        DataOutputStream ds =
                new DataOutputStream(con.getOutputStream());
        ds.writeBytes(twoHyphens + boundary + end);
        ds.writeBytes("Content-Disposition: form-data; "+
                "name=\"file1\";filename=\""+
                newName +"\""+ end);
        ds.writeBytes(end);
      /* 取得文件的FileInputStream */
        FileInputStream fStream =new FileInputStream(path);
      /* 设置每次写入1024bytes */
        int bufferSize =1024;
        byte[] buffer =new byte[bufferSize];
        int length =-1;
      /* 从文件读取数据至缓冲区 */
        while((length = fStream.read(buffer)) !=-1)
        {
        /* 将资料写入DataOutputStream中 */
            ds.write(buffer, 0, length);
        }
        ds.writeBytes(end);
        ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
      /* close streams */
        fStream.close();
        ds.flush();
      /* 取得Response内容 */
        InputStream is = con.getInputStream();
        int ch;
        StringBuffer b =new StringBuffer();
        while (( ch = is.read() ) !=-1 )
        {
            b.append( (char)ch );
        }

        ds.close();
    }
    catch(Exception e)
    {

    }
}

后,django 服务器端就可以正常获取图片了,哪位大神知道怎么回事吗?okhttp 哪里我用错了吗?不胜感激~~

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
超声波测距HC-SR04,CC2530
不知道怎么回事,不大对,哪位大神能给改改
android okHttp3 post上传图片给服务器
进行post请求 OkHttpClient client = new OkHttpClient(); // form 表单形式上传 MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM); if(file != null){ // MediaType.par
【Android】Android客户端使用okhttp上传文件php服务器
为了更好的在应对网络访问,最近学习了一下okhttp,感觉挺方便使用的,首先要使用okhttp,需要在项目中导入okhttp-x.x.x.jar   okhttputils-x_x_x.jar   okio-x.x.x.jar 这三个jar包,下面贴出Android端和服务器端关键代码: private void uplodeImage(File mFile) { //mFile一个真
android 头像利用okhttp上传到服务器部分----萌新成长之路
上一篇博客我们成功完成了从照相机拍摄和相册里选择图片并在app中显示出来。我们也完成了初步的裁剪。今天我们来把用户的数据上传到服务器,模拟一个用户在游戏内部修改自己头像,点击确定以后的保存过程。
调用系统照相机拍摄照片并管理,Okhttp上传至后台
调用系统照相机拍照,采用图片框里库预览图片,采用okhttp上传文件至后台。
okHttp 多图片上传(含服务器代码)--来自CSDN
okHttp 多图片上传(含服务器代码)--来自CSDN
android OkHttp上传文件,selvelt服务端
最近项目需要一个文件上传的功能,之前服务端都是uploadFile第三方库去做,但是时常会有文件上传失败的请求(没办法上传失败就让用户再上传一次吧)。 但近日看了大牛鸿洋_的博客 http://blog.csdn.net/lmj623565791/article/details/47911083 Android OkHttp完全解析 是时候来了解OkHttp了 废弃了自己的数据请求的工具类
okhttp 上传图片 PHP服务端接收
Android: OkHttpClient mOkHttpClent = new OkHttpClient(); System.out.println(path); File file = new File(path); MultipartBody.Builder builder = new MultipartBody.Builder() .setType(Mult...
Android端通过Okhttp与PHP服务器进行交互并实现文件上传下载(二)
简介 上一篇文章给出了Android端的部分代码,这篇文章则完成了服务器端的相关工作,我选择php来对上传文件进行处理,毕竟php比较好上手。 准备工作 1.准备一个服务器,可以选择购买云服务器或者搭建在本地,我选择的是腾讯云,学生价一个月一块钱,很划算 2.配置好服务器相关环境,我选择的是CentOS,大家尽量选择基于Linux的环境 服务器端代码 receive_file....
okhttp上传文件包含服务端(java)
okhttp上传文件,包含Android客户端代码和Java Servlet服务端代码,本地测试通过。