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

本文实例为大家分享了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配置权限

在application里面添加android:usesCleartextTraffic="true"
3.安卓前端部分
3.1xml样式界面

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; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String result = "{\"data\": \"0\"}"; new Thread(new Runnable(){@Overridepublic 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() {@Overridepublic 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")@ResponseBodypublic 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图标,打开读取本地文件的权限即可
【android|android studio实现上传图片到java服务器】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读