android studio实现上传图片到java服务器

Rochelle ·
更新时间:2024-09-20
· 1028 次阅读

本文实例为大家分享了android studio上传图片到java服务器的具体代码,供大家参考,具体内容如下

1.build.gradle配置(增加)

dependencies{      implementation 'com.squareup.okhttp3:okhttp:4.9.0'      implementation 'org.conscrypt:conscrypt-android:2.5.1'         }

2.AndroidManifest.xml配置权限

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在application里面添加android:usesCleartextTraffic="true"

3.安卓前端部分

3.1xml样式界面

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     >     <Button         android:id="@+id/btn"         android:layout_width="150dp"         android:layout_height="100dp"         android:text="上传"/> </LinearLayout>

3.2安卓后台代码MainActivity

package com.example.upload; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import org.json.JSONException; import org.json.JSONObject; import java.io.File; import java.io.IOException; 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 btn;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         btn = findViewById(R.id.btn);         btn.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 String result = "{\"data\": \"0\"}";                 new Thread(new Runnable(){                     @Override                     public void run() {                         String img = Environment.getExternalStorageDirectory()+"/1/123456789.png";                         String url = "http://192.168.0.103:8019/uploadAudio";                         try {                             uploadImage(url,img);                         } catch (IOException e) {                             Looper.prepare();                             e.printStackTrace();                             Looper.loop();                         } catch (JSONException e) {                             e.printStackTrace();                         }                         //创建信息对象                         Message message = Message.obtain();                         Bundle bundle = new Bundle();                         bundle.putString("data",result);                         message.setData(bundle);//向主线程发信息                         addTrackHandler.sendMessage(message);                     }                 }).start();             }         });     }     /**      * 上传图片      * @param url      * @param imagePath 图片路径      * @return 新图片的路径      * @throws IOException      * @throws JSONException      */     public static String uploadImage(String url, String imagePath) throws IOException, JSONException {         OkHttpClient okHttpClient = new OkHttpClient();         File file = new File(imagePath);         RequestBody image = RequestBody.create(MediaType.parse("image/png"), file);         RequestBody requestBody = new MultipartBody.Builder()                 .setType(MultipartBody.FORM)                 .addFormDataPart("file", imagePath, image)                 .build();         Request request = new Request.Builder()                 .url(url)                 .post(requestBody)                 .build();         Response response = okHttpClient.newCall(request).execute();         JSONObject jsonObject = new JSONObject(response.body().string());         return jsonObject.optString("image");     }     Handler addTrackHandler = new Handler(new Handler.Callback() {         @Override         public boolean handleMessage(Message message) {             String result = "";             try {                 result = message.getData().getString("data");                 Toast.makeText(MainActivity.this, "新增成功", Toast.LENGTH_SHORT).show();             }catch (Exception e){             }             //Toast.makeText(MainActivity.this, "调用成功"+result, Toast.LENGTH_SHORT).show();//测试弹框             return true;         }     }); }

4.spring boot后台接受图片并写入本地路径

@RequestMapping("/uploadAudio")     @ResponseBody     public void uploadAudio(@RequestParam MultipartFile file) {   System.out.println(file.getOriginalFilename());         if (!file.isEmpty()) {             String filename = file.getOriginalFilename();             System.out.println("Load fn:" + filename);             try {                 String fileurl = "d:/Download/testt.png";                 File f = new File(fileurl);                 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(f));                 if (!f.exists()) {                     try {                         f.createNewFile();                     } catch (IOException e) {                         e.printStackTrace();                     }                 }                 out.write(file.getBytes());                 out.flush();                 out.close();             } catch (IOException e) {                 e.printStackTrace();             }         }else {             System.out.println("上传失败,因为文件是空的.");         }     }

注:如果上传图片提示没有权限,则长按apk图标,打开读取本地文件的权限即可



java服务器 上传图片 studio JAVA 图片 Android

需要 登录 后方可回复, 如果你还没有账号请 注册新账号