您好,欢迎访问一九零五行业门户网

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图标,打开读取本地文件的权限即可
以上就是android studio如何实现上传图片到java服务器的详细内容。
其它类似信息

推荐信息