android实现上传本地图片到网络功能

  

本文实例为大家分享了android上传本地图片到网络的具体代码,供大家参考,具体内容如下

  

首先这里用到了Okhttp所以需要一个依赖:
  

        编译的com.squareup.okhttp3: okhttp: 3.9.0   之前      

xml布局
  

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android "   xmlns:应用=" http://schemas.android.com/apk/res-auto "   xmlns:工具=" http://schemas.android.com/tools "   android: layout_width=" match_parent "   android:取向=按怪薄?   android: layout_height=" match_parent "   工具:上下文=癱om.bwei.czx.czx10.MainActivity”比;      & lt;按钮   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: id=癅 + id/照片/比;         & lt;按钮   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: id=癅 + id/camear”/比;      & lt;/LinearLayout>   之前      

AndroidManifest。xml中:权限
  

        & lt; uses-permission android: name=" android.permission.INTERNET "/比;   & lt; uses-permission android: name=" android.permission.WRITE_EXTERNAL_STORAGE "/比;   & lt; uses-permission android: name=" android.permission.READ_EXTERNAL_STORAGE "/比;   之前      

MainActivity中:
  

  

oncreat:
  

        @Override   保护空白>   公共空间postFile(文件文件){//sdcard/dliao/aaa.jpg   字符串路径=file.getAbsolutePath ();      String []=path.split分裂(“\ \/?;         MediaType MEDIA_TYPE_PNG=MediaType.parse(“图像/png”);         OkHttpClient客户=new OkHttpClient ();      RequestBody RequestBody=new MultipartBody.Builder ()   .setType (MultipartBody.FORM)//文件   .addFormDataPart (“imageFileName”,分裂[split.length-1])   .addFormDataPart(“形象”,分裂[split.length-1], RequestBody.create (MEDIA_TYPE_PNG、文件)   .build ();            请求请求=new Request.Builder () . post (requestBody) .url (" https://cache.yisu.com/upload/information/20200623/125/126390.jpg ";   返回LocalPhotoName;   }      公共空间toCamera () {   尝试{   意图intentNow=new意图(MediaStore.ACTION_IMAGE_CAPTURE);   Uri Uri=零;//如果(Build.VERSION。SDK_INT祝辞=Build.VERSION_CODES.N){//针对Android7.0,需要通过FileProvider封装过的路径,提供给外部调用//uri=FileProvider.getUriForFile (UploadPhotoActivity。这个,”com.bw。dliao”, SDCardUtils.getMyFaceFile (createLocalPhotoName()));//通过FileProvider创建一个内容类型的Uri,进行封装//其他}{   uri=Uri.fromFile (SDCardUtils.getMyFaceFile (createLocalPhotoName ()));//}   intentNow.putExtra (MediaStore。EXTRA_OUTPUT uri);   startActivityForResult (intentNow INTENTFORCAMERA);   }捕捉(异常e) {   e.printStackTrace ();   }   }/* *   *打开相册   */公共空间toPhoto () {   尝试{   createLocalPhotoName ();   意图getAlbum=new意图(Intent.ACTION_GET_CONTENT);   getAlbum.setType(“图像/*”);   startActivityForResult (getAlbum INTENTFORPHOTO);   }捕捉(异常e) {   e.printStackTrace ();   }   }   @Override   保护空白>   包com.bwei.czx.czx10;      进口android.graphics.Bitmap;   进口android.graphics.BitmapFactory;   进口android.graphics.Matrix;   进口android.media.ExifInterface;      进口java.io.File;   进口java.io.FileInputStream;   进口java.io.FileNotFoundException;   进口java.io.IOException;   进口java.io.InputStream;   进口java.io.OutputStream;      进口静态android.graphics.BitmapFactory.decodeFile;/* *   *由czx>   包com.bwei.czx.czx10;      进口android.os.Environment;   进口android.os.StatFs;      进口java.io.File;   进口java.io.IOException;/* *   *由czx 2017/9/27。   */公开课SDCardUtils {   公共静态最终字符串DLIAO=癉LIAO”;      公共静态文件photoCacheDir=SDCardUtils.createCacheDir (Environment.getExternalStorageDirectory () .getAbsolutePath() +文件。分离器+ DLIAO);   公共静态字符串cacheFileName=癿yphototemp.jpg”;            公共静态布尔isSDCardExist () {   如果(Environment.getExternalStorageState () .equals (Environment.MEDIA_MOUNTED)) {   返回true;   其他}{   返回错误;   }   }      公共静态孔隙delFolder(字符串folderPath) {   尝试{   delAllFile (folderPath);   字符串filePath=folderPath;   filePath=filePath.toString ();   文件myFilePath=新文件(filePath);   myFilePath.delete ();   }捕捉(异常e) {   e.printStackTrace ();   }   }      公共静态布尔delAllFile (String路径){   布尔标志=false;   文件文件=新文件(路径);   如果(! file.exists ()) {   返回国旗;   }   如果(! file.isDirectory ()) {   返回国旗;   }   String [] tempList=file.list ();   文件临时=零;   for (int i=0;我& lt;tempList.length;我+ +){   如果(path.endsWith (File.separator)) {   temp=新文件(路径+ tempList[我]);   其他}{   temp=新文件(路径+文件。分离器+ tempList[我]);   }   如果(temp.isFile ()) {   temp.delete ();   }   如果(temp.isDirectory ()) {   delAllFile(路径+ " + tempList[我]);//先删除文件夹里面的文件   delFolder(路径+ " + tempList[我]);//再删除空文件夹   国旗=true;   }   }   返回国旗;   }      公共静态布尔deleteOldAllFile(最终字符串路径){   尝试{   新线程(新Runnable () {      @Override   公共空间run () {   delAllFile (Environment.getExternalStorageDirectory() +文件。分离器+ DLIAO);   }   }) .start ();      }捕捉(异常e) {   e.printStackTrace ();   返回错误;   }   返回true;   }/* *   *给定字符串获取文件夹   *   * @param dirPath   * @return创建的文件夹的完整路径   */公共静态文件createCacheDir(字符串dirPath) {   文件dir=新文件(dirPath);;   如果(isSDCardExist ()) {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

android实现上传本地图片到网络功能