這篇“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配置權限
<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服務器”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。