当前位置: 首页 > 编程笔记 >

Android OkHttp 结合php 多图片上传实例

钱锦
2023-03-14
本文向大家介绍Android OkHttp 结合php 多图片上传实例,包括了Android OkHttp 结合php 多图片上传实例的使用技巧和注意事项,需要的朋友参考一下

今天写项目的时候需要多图片上传,就用okhttp简单写一个例子。

public class MainActivity extends AppCompatActivity {

  private OkHttpClient client;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    client = new OkHttpClient();
    postImage();
  }

  private void postImage(){
    //这里方便演示。读取drawable里的图片。
    Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.demo);

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    bm.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);

    MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM)
        .addFormDataPart("img_1","1.jpg", RequestBody.create(MediaType.parse("image/jpeg"),byteArrayOutputStream.toByteArray()))
        .addFormDataPart("img_2","2.jpg", RequestBody.create(MediaType.parse("image/jpeg"),byteArrayOutputStream.toByteArray()))
        ;
    //有多个图片就用for循环添加即可

    MultipartBody build = builder.build();

    okhttp3.Request bi = new okhttp3.Request.Builder()
        .url("后台地址") 
        .post(build)
        .build();

    client.newCall(bi).enqueue(new Callback() {
      @Override
      public void onFailure(Call call, IOException e) {
        Log.i("TAG", "onFailure: 失败");
      }

      @Override
      public void onResponse(Call call, okhttp3.Response response) throws IOException {
        Log.i("TAG", "onResponse: " + response.body().string());
        //提交成功处理结果....
      }
    });

  }
}

配合PHP后台接收图片地址:

具体代码如下,支持多个图片的上传,返回json格式,方便客户端进行处理数据。

<?php
header('Content-type: application/json;charset=utf-8');

if(empty($_FILES)) die('{"status":0,"msg":"错误提交"}');

$dirPath = './img/';//设置文件保存的目录

if(!is_dir($dirPath)){
  //目录不存在则创建目录
  @mkdir($dirPath);
}

$count = count($_FILES);//所有文件数

if($count<1) die('{"status":0,"msg":"错误提交"}');//没有提交的文件

$success = $failure = 0;

foreach($_FILES as $key => $value){
  //循环遍历数据
  $tmp = $value['name'];//获取上传文件名
  $tmpName = $value['tmp_name'];//临时文件路径
  //上传的文件会被保存到php临时目录,调用函数将文件复制到指定目录
  if(move_uploaded_file($tmpName,$dirPath.date('YmdHis').'_'.$tmp)){
    $success++;
  }else{
    $failure++;
  }
}

$arr['status'] = 1;
$arr['msg']   = '提交成功';
$arr['success'] = $success;
$arr['failure'] = $failure;

echo json_encode($arr);

Android端使用okHttp上传,测试上传图如下:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍javascript结合fileReader 实现上传图片,包括了javascript结合fileReader 实现上传图片的使用技巧和注意事项,需要的朋友参考一下 关于File API这里就不详细解释了,小伙伴们自行度娘吧,来我们就要利用文件句柄来读取文件内容,这是通过FileReader来实现的,通过FileReader接口,我们可以异步地将文件内容加载到内存中,赋予某个js变量

  • 本文向大家介绍PHP结合Ueditor并修改图片上传路径,包括了PHP结合Ueditor并修改图片上传路径的使用技巧和注意事项,需要的朋友参考一下 前言 在使用UEditor编辑器时,一般我们都是需要修改默认的图片上传路径的,下面是我整理好的修改位置和方法供大家参考。 操作 Ueditor PHP版本本身自带了一套上传程序,我们可以在此基础中,找到配置文件修改它。配置文件位置: ueditor/p

  • 本文向大家介绍Yii结合CKEditor实现图片上传功能,包括了Yii结合CKEditor实现图片上传功能的使用技巧和注意事项,需要的朋友参考一下 这几天做的一个项目中需要在所见即所得编辑器中实现图片上传的功能,我因为比较喜欢CKEditor的界面而选择了它。虽然有跟CKEditor配合良好的CKFinder,不过这个东东的功能太复杂,简单看了下CKEdtior的文档,发现这个功能还是可以自己实现

  • 本文向大家介绍jquery.Jcrop结合JAVA后台实现图片裁剪上传实例,包括了jquery.Jcrop结合JAVA后台实现图片裁剪上传实例的使用技巧和注意事项,需要的朋友参考一下 本文介绍了头像裁剪上传功能,用到的技术有  jQuery,springmvc,裁剪插件用的是jcrop(中间遇到很多坑,最终跨越)。 图片上传步骤: 1.用户选择图片 2.将图片传入后台:用户选择图片的时候选择的是各

  • 本文向大家介绍php多个文件及图片上传实例详解,包括了php多个文件及图片上传实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php多个文件及图片上传的方法。分享给大家供大家参考。具体实现方法如下: 多个文件上传是在单文件上传的基础上利用遍历数组的方式进行遍历表单数组然后把文件一个个上传到服务器上了,下面就来看一个简单多个文件上传实例 多个文件上传和单独文件上传的处理方式是一样的,

  • 本文向大家介绍php结合imgareaselect实现图片裁剪,包括了php结合imgareaselect实现图片裁剪的使用技巧和注意事项,需要的朋友参考一下 引用CSS 引用js html jQuery代码 确定裁剪 服务器端php代码 以上所述就是本文的全部内容了,希望大家能够喜欢。