Android将图片上传到php服务器的实例代码

 更新时间:2017年07月28日 09:44:41   作者:潇遥快乐  
这篇文章主要介绍了Android将图片上传到php服务器的实例代码,需要的朋友可以参考下

layout中很普通,就是两个button和一个ImageView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  >
  <Button
    android:id="@+id/test"
    android:layout_width="368dp"
    android:layout_height="wrap_content"
    android:text="button1"
    android:textAllCaps="false" />
  <Button
    android:id="@+id/test2"
    android:layout_width="368dp"
    android:layout_height="wrap_content"
    android:text="button2"
    android:textAllCaps="false"
    />
  <ImageView
    android:id="@+id/image"
    android:layout_width="0dp"
    android:layout_height="495dp"
    />
</LinearLayout>

在主页面中给按钮添加事件:

package success.xiaoyu.okhttp3;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
  private Button button1,button2;
  private ImageView imageView;
  private Handler handler = new Handler(){
    public void handleMessage(Message msg) {
      Bitmap bitmap = (Bitmap)msg.obj;
      imageView.setImageBitmap(bitmap);
      //Toast.makeText(MainActivity.this, Environment.getExternalStorageDirectory()+"",Toast.LENGTH_LONG).show();
    }
  };
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    button1 = (Button)findViewById(R.id.test);
    button2 = (Button)findViewById(R.id.test2);
    imageView = (ImageView)findViewById(R.id.image);
    button1.setOnClickListener(new View.OnClickListener() {//将服务器的图片读取到本地
      public void onClick(View view) {
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url("http://115.159.217.226/xy.png")
                 .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
          public void onFailure(Call call, IOException e) {
          }
          public void onResponse(Call call, Response response) throws IOException {
            InputStream inputStream = response.body().byteStream();
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            Message msg = new Message();
            msg.obj = bitmap;
            handler.sendMessage(msg);
          }
        });
      }
    });
    button2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        uploadMultiFile();
      }
    });
  }
  private void uploadMultiFile() {//将图片发送到服务器
    final String url = "http://115.159.217.226/upload.php";
    File file = new File( Environment.getExternalStorageDirectory()+"/storage/emulated/0/", "xy.jpg");
    RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
    File file2 = new File( Environment.getExternalStorageDirectory()+"/storage/emulated/0/", "yyw.jpg");
    RequestBody fileBody2 = RequestBody.create(MediaType.parse("application/octet-stream"), file2);
    RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("image1", "xy.jpg", fileBody)
        .addFormDataPart("image2", "yyw.jpg", fileBody2)
        .build();
    Request request = new Request.Builder()
        .url(url)
        .post(requestBody)
        .build();
    final okhttp3.OkHttpClient.Builder httpBuilder = new OkHttpClient.Builder();
    OkHttpClient okHttpClient = httpBuilder
        //设置超时
        .connectTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(15, TimeUnit.SECONDS)
        .build();
    okHttpClient.newCall(request).enqueue(new Callback() {
      @Override
      public void onFailure(Call call, IOException e) {
        Log.e("aa", "uploadMultiFile() e=" + e);
      }
      @Override
      public void onResponse(Call call, Response response) throws IOException {
        Log.i("bb", "uploadMultiFile() response=" + response.body().string());
      }
    });
  }
}

服务器端代码:

  <?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将图片上传到php服务器的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Flutter应用集成极光推送的实现示例

    Flutter应用集成极光推送的实现示例

    这篇文章主要介绍了Flutter应用集成极光推送的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Android横竖屏切换及其对应布局加载问题详解

    Android横竖屏切换及其对应布局加载问题详解

    这篇文章主要为大家详细介绍了Android横竖屏切换及其对应布局加载问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Android中Shape的用法详解

    Android中Shape的用法详解

    工作中总是会用到shape去画一些背景,每次都要去百度,但是很多都写的很模糊或者属性不是很全,所以今天自己总结了一下,给大家分享一下,自己以后也可以看
    2017-07-07
  • Android模拟实现网易新闻客户端

    Android模拟实现网易新闻客户端

    这篇文章主要为大家详细介绍了Android模拟实现网易新闻客户端,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android动态权限申请详解

    Android动态权限申请详解

    大家是否还在为动态权限申请感到苦恼呢?传统的动态权限申请需要在Activity中重写onRequestPermissionsResult方法来接收用户权限授予的结果,本文介绍了如何简单的实现Android动态权限申请
    2023-04-04
  • Android自定义ProgressBar实现漂亮的进度提示框

    Android自定义ProgressBar实现漂亮的进度提示框

    这篇文章主要为大家详细介绍了Android自定义ProgressBar实现漂亮的进度提示框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Android性能优化全局异常处理详情

    Android性能优化全局异常处理详情

    这篇文章主要介绍了Android性能优化全局异常处理详情,文章围绕主题展开详细的内容协商,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-08-08
  • 教你安装配置Android Studio

    教你安装配置Android Studio

    对于Android Studio相信大家都不陌生了,作为谷歌推出的安卓开发工具,做过java的同学应该都了解,下面我们就简单介绍下这款工具的安装预配置
    2015-12-12
  • Jetpack Compose惯性衰减动画AnimateDecay详解

    Jetpack Compose惯性衰减动画AnimateDecay详解

    这篇文章主要为大家介绍了Jetpack Compose惯性衰减动画AnimateDecay详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android实现放大镜效果的方法实例(附源码)

    Android实现放大镜效果的方法实例(附源码)

    这篇文章主要给大家介绍了利用Android实现放大镜效果的方法实例,文中给出了详细的介绍和示例代码,文章的结尾更是给出了源码供大家下载学习,有需要的朋友们下面来一起看看吧。
    2017-01-01

最新评论