直播原始碼搭建教程之獲取相簿中的指定一個圖片後上傳
直播原始碼搭建教程之獲取相簿中的指定一個圖片後上傳實現的相關程式碼
package com.example.myapplication; import android.Manifest; import android.app.ProgressDialog; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.content.FileProvider; import org.xutils.ex.HttpException; import org.xutils.http.RequestParams; import org.xutils.x; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { ProgressDialog dialogShibie; List<File> fileArrayList; private static final int CAMERA_CODE = 200; private static final int ALBUM_CODE = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fileArrayList = new ArrayList<>(); dialogShibie = new ProgressDialog(this); // upload(); takesD(); } @Override protected void onResume() { super.onResume(); // takesD(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (permissions[0] == Manifest.permission.CAMERA) { openCamera(); } else if (permissions[0] == Manifest.permission.WRITE_EXTERNAL_STORAGE) { openAlbum(); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_CODE) { if (resultCode == RESULT_OK) { try { //Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver() // .openInputStream(mImageUri)); //img.setImageBitmap(bitmap); //處理照相之後的結果並上傳 uploadOk(mFile); } catch (Exception e) { e.printStackTrace(); } } } else if (requestCode == ALBUM_CODE) { //相簿 if (resultCode == RESULT_OK) { Uri imageUri = data.getData(); //處理uri,7.0以後的fileProvider 把URI 以content provider 方式 對外提供的解析方法 File file = getFileFromUri(imageUri, this); // String parent = file.getParent(); // List<String> filesAllName = getFilesAllName(parent); Log.e("wy", "getParent: "+ filesAllName.get(0) ); // for (int i = 0; i <filesAllName.size() ; i++) { // Log.e("wy", "onActivityResult: "+filesAllName.get(i) ); // File f = new File(parent, filesAllName.get(i)); // } if (file.exists()) { updateFile(file); } } } } public List<String> getFilesAllName(String path) { File file=new File(path); File[] files=file.listFiles(); if (files == null){Log.e("error","空目錄");return null;} List<String> s = new ArrayList<>(); for(int i =0;i<files.length;i++){ s.add(files[i].getName()); } return s; } public File getFileFromUri(Uri uri, Context context) { if (uri == null) { return null; } Log.e("wy", "getScheme: "+uri.getScheme() ); switch (uri.getScheme()) { case "content": return getFileFromContentUri(uri, context); case "file": return new File(uri.getPath()); default: return null; } } /** * 通過內容解析中查詢uri中的檔案路徑 */ private File getFileFromContentUri(Uri contentUri, Context context) { if (contentUri == null) { return null; } File file = null; String filePath; String[] filePathColumn = {MediaStore.MediaColumns.DATA}; ContentResolver contentResolver = context.getContentResolver(); Cursor cursor = contentResolver.query(contentUri, filePathColumn, null, null, null); if (cursor != null) { cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); filePath = cursor.getString(columnIndex); Log.e("wy", "filePath: "+filePath); cursor.close(); if (!TextUtils.isEmpty(filePath)) { file = new File(filePath); } } return file; } /** * 檔案上傳 */ private void uploadOk(File file) { } private void updateFile(File file) { //拍照獲取的圖片 fileArrayList.clear(); fileArrayList.add(file); List<File> mFile = fileArrayList; // 存到本地的圖片 // String sdPath = getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/a/test.jpg"; // File mFile=new File(sdPath); dialogShibie.setTitle("上傳中"); dialogShibie.show(); // Log.e("wy1", "開始上傳圖片的時間: " + TimeUtil.stampToDate(System.currentTimeMillis() + "")); RequestParams params = new RequestParams("http://192.168.176.119/uploadFile"); // params.setConnectTimeout(5000); // 有上傳檔案時使用multipart表單, 否則上傳原始檔案流. params.setMultipart(true); // 上傳檔案方式 2 /mnt/internal_sd/FtrendCrashLog/th.jpg params.addBodyParameter("files", mFile); // params.addBodyParameter("file", bitmapUse); Log.e("wy", "params: " + params); org.xutils.common.Callback.Cancelable cancelable = x.http().post(params, new org.xutils.common.Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Log.e("wy1", "上傳圖片成功: " ); dialogShibie.dismiss(); Toast.makeText(x.app(), "上傳圖片成功", Toast.LENGTH_SHORT).show(); Log.e("wy", "result: " + result); } @Override public void onError(Throwable ex, boolean isOnCallback) { //Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); if (ex instanceof HttpException) { // 網路錯誤 HttpException httpEx = (HttpException) ex; int responseCode = httpEx.getCode(); String responseMsg = httpEx.getMessage(); String errorResult = httpEx.getResult(); Log.e("wy", "responseCode " +responseCode); if (responseCode == 404) { dialogShibie.dismiss(); Toast.makeText(x.app(), "ip地址錯誤", Toast.LENGTH_LONG).show(); } // ... } else { // 其他錯誤 // ... } // dialogShibie.dismiss(); Log.e("wy", "請求上傳圖片地址錯誤: " + ex.getMessage()); // Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancelled(CancelledException cex) { Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show(); } @Override public void onFinished() { dialogShibie.dismiss(); Log.e("wy", "本次請求完全結束 "); } }); } private File mFile; private Uri mImageUri; private void openCamera() { //建立檔案用於儲存圖片 mFile = new File(getExternalCacheDir(), System.currentTimeMillis() + ".jpg"); if (!mFile.exists()) { try { mFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } //適配7.0 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { mImageUri = Uri.fromFile(mFile); } else { //第二個引數要和清單檔案中的配置保持一致 mImageUri = FileProvider.getUriForFile(this, "com.baidu.upload.provider", mFile); } //啟動相機 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);//將拍照圖片存入mImageUri startActivityForResult(intent, CAMERA_CODE); } private void takesD() { //許可權判斷 if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { openAlbum(); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission .WRITE_EXTERNAL_STORAGE}, 100); } } private void openAlbum() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, ALBUM_CODE); } public List<File> saveBitmap() { Log.e("wy", "開始儲存"); //生成一個檔案,儲存我們將來拍照的照片 // String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/a/" ; String sdPath = getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/a/"; // String sdPath = "/mnt/sdcard/Internal Memory" ; // File file = new File(sdPath); // Log.e("wy", "絕對檔案路徑: " + file.getAbsoluteFile()); // Log.e("wy", "檔名: " + file.getName()); // if (!file.exists()) { // file.mkdirs(); // Log.e("wy", "建立資料夾,路徑:" + file.getPath()); // } // String mFileName = System.currentTimeMillis() + ".jpg"; String mFileName = "a.jpg"; String mFileName1 = "b.jpg"; String mFileName2 = "c.jpg"; String mFileName3 = "d.jpg"; String mFileName4 = "e.jpg"; Log.e("wy", "儲存檔名稱: " + mFileName); File f = new File(sdPath, mFileName); File f2 = new File(sdPath, mFileName1); File f3 = new File(sdPath, mFileName2); File f4 = new File(sdPath, mFileName3); File f5 = new File(sdPath, mFileName4); fileArrayList.clear(); fileArrayList.add(f); fileArrayList.add(f2); fileArrayList.add(f3); // fileArrayList.add(f4); // fileArrayList.add(f5); // fileArrayList.add(f2); return fileArrayList; } private void upload() { //拍照獲取的圖片 List<File> mFile = saveBitmap(); // 存到本地的圖片 // String sdPath = getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/a/test.jpg"; // File mFile=new File(sdPath); dialogShibie.setTitle("上傳中"); dialogShibie.show(); // Log.e("wy1", "開始上傳圖片的時間: " + TimeUtil.stampToDate(System.currentTimeMillis() + "")); RequestParams params = new RequestParams("http://192.168.176.119/uploadFile"); // params.setConnectTimeout(5000); // 有上傳檔案時使用multipart表單, 否則上傳原始檔案流. params.setMultipart(true); // 上傳檔案方式 2 /mnt/internal_sd/FtrendCrashLog/th.jpg params.addBodyParameter("files", mFile); // params.addBodyParameter("file", bitmapUse); Log.e("wy", "params: " + params); org.xutils.common.Callback.Cancelable cancelable = x.http().post(params, new org.xutils.common.Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Log.e("wy1", "上傳圖片成功: " ); dialogShibie.dismiss(); // Toast.makeText(x.app(), "查到任務ID", Toast.LENGTH_SHORT).show(); Log.e("wy", "result: " + result); } @Override public void onError(Throwable ex, boolean isOnCallback) { //Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); if (ex instanceof HttpException) { // 網路錯誤 HttpException httpEx = (HttpException) ex; int responseCode = httpEx.getCode(); String responseMsg = httpEx.getMessage(); String errorResult = httpEx.getResult(); Log.e("wy", "responseCode " +responseCode); if (responseCode == 404) { dialogShibie.dismiss(); Toast.makeText(x.app(), "ip地址錯誤", Toast.LENGTH_LONG).show(); } // ... } else { // 其他錯誤 // ... } // dialogShibie.dismiss(); Log.e("wy", "請求上傳圖片地址錯誤: " + ex.getMessage()); // Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancelled(CancelledException cex) { Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show(); } @Override public void onFinished() { dialogShibie.dismiss(); Log.e("wy", "本次請求完全結束 "); } }); } }
以上就是 直播原始碼搭建教程之獲取相簿中的指定一個圖片後上傳實現的相關程式碼,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2795094/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- app直播原始碼,Vue獲取URL圖片的寬高APP原始碼Vue
- 成品直播原始碼,JAVA獲取圖片的寬、高和大小原始碼Java
- 直播軟體原始碼,Vue獲取URL圖片的寬高原始碼Vue
- Android本地圖片上傳(拍照+相簿)Android地圖
- 線上直播原始碼,js 檔案上傳 圖片上傳 傳輸速度計算原始碼JS
- 直播平臺原始碼,上傳本地圖片實現個人名片背景圖輪播原始碼地圖
- 用python寫個爬取指定網址上所有圖片,並能根據獲取到的圖片網址,進入網址,再次進行圖片獲取 的程式碼指令碼Python指令碼
- 直播原始碼開發,實現相簿的上傳和縮放裁剪原始碼
- 直播平臺搭建,Android手機拍照和手機相簿選取圖片的工具Android
- 直播帶貨小程式原始碼中,商品詳情頁是如何獲取html圖片的原始碼HTML
- 短視訊直播原始碼,動態釋出時選擇圖片、上傳圖片原始碼
- 直播平臺搭建原始碼,java相簿製作原始碼Java
- 直播軟體原始碼,JS獲取指定長度的隨機字元原始碼JS隨機字元
- 線上直播原始碼,js獲取捲軸的位置原始碼JS
- 直播app開發搭建,ios 獲取手機中所有圖片APPiOS
- 短視訊帶貨原始碼,儲存圖片到相簿/相簿原始碼
- 短視訊直播原始碼,自動對上傳的圖片進行識別原始碼
- 直播平臺搭建原始碼,更改圖片透明度原始碼
- 直播帶貨app原始碼,獲取直播影片的第一幀APP原始碼
- 直播原始碼開發,laravel-admin整合wangEditor2及上傳圖片原始碼Laravel
- app直播原始碼,js實現上傳圖片型別+大小+尺寸驗證APP原始碼JS型別
- Android 從手機相簿獲取圖片 uri 路徑 從相機獲取照片Android
- android短視訊開發,呼叫相機、相簿,壓縮圖片後上傳Android
- 直播原始碼,獲取兩個日期之間的所有日期原始碼
- 一對一直播app開發,單次獲得或上傳一張相簿裡的照片APP
- 線上直播系統原始碼,Node.js中使用Koa實現上傳圖片功能原始碼Node.js
- 直播平臺原始碼,vue圖片中劃框擷取部分圖片原始碼Vue
- 用Flask寫一個上傳圖片的APIFlaskAPI
- 直播原始碼如何搭建一個屬於自己的直播平臺?原始碼
- 直播平臺搭建原始碼,bootstrap實現圖片輪播效果原始碼boot
- ci框架中的圖片上傳框架
- 織夢圖集上傳圖片自動獲取圖片名稱做註釋
- 直播商城原始碼,實現商城客服聊天,傳送文字、圖片的功能原始碼
- 分享一個看起來很酷的圖片上傳元件元件
- js中圖片上傳,多次上傳同一張不生效JS
- 利用微信公眾號提供的官方API上傳圖片獲取永久圖片素材!當圖床用!API圖床
- 【原始碼】RocketMQ如何實現獲取指定訊息原始碼MQ
- 手機直播原始碼,前端圖片壓縮上傳需顧及清晰度問題原始碼前端