OKHttp3 서버에 사진 업로드
OKHttp3 서버에 사진 업로드
이 글은 okhttp3에 대한 사용자 프로필 사진을 서버에 업로드하는 것을 소개합니다
코드 블록
public class ImgagePhoneoActivity extends AppCompatActivity {
private static final int REQUEST_CHOOSE_IMAGE = 0x01;
private static final int REQUEST_WRITE_EXTERNAL_PERMISSION_GRANT = 0xff;
private TextView photoPath;
private ImageView photo;
String image_path;
private File file;
Uri uri;
private final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.iiiiii);
findViewById(R.id.choose_image_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
prepareToOpenAlbum();//
}
});
//
photo = (ImageView) findViewById(R.id.photo);
}
private void prepareToOpenAlbum() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_EXTERNAL_PERMISSION_GRANT);
} else {
openAlbum();
}
}
//
private void openAlbum() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CHOOSE_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CHOOSE_IMAGE && resultCode == RESULT_OK) {
// uri
uri= data.getData();
//
image_path = ImageUtils.getRealPathFromUri(this, uri);
Bitmap bitmap = BitmapFactory.decodeFile(image_path);
photo.setImageBitmap(bitmap);
file = new File(image_path);
// ,
sendStudentInfoToServer(file);
}
super.onActivityResult(requestCode, resultCode, data);
}
private void sendStudentInfoToServer( File file) {
//
String urlAddress = "http://116.62.130.5:80/sjb/portal/login/img";
if (file != null && file.exists()) {
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("files", "img" + "_" + System.currentTimeMillis() + ".jpg",
RequestBody.create(MEDIA_TYPE_PNG, file));
HttpUtil.sendMultipart(urlAddress, builder.build(), new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string();
Log.e("---", "onResponse: :" + result);
//result 。
}
});
}
}
}
HttpUtil 코드:
public class HttpUtil {
private static OkHttpClient okHttpClient = new OkHttpClient();
private static Request.Builder builder = new Request.Builder();
/**
* OkHttp GET
*
* @param url url
* @param callback
*/
public static void sendOkHttpGetRequest(String url, Callback callback) {
Request request = builder.url(url).build();
okHttpClient.newCall(request).enqueue(callback);
}
/**
* OkHttp POST
*
* @param urlAddress url
* @param requestBody
* @param callback
*/
public static void sendOkHttpPostRequest(String urlAddress, RequestBody requestBody, Callback callback) {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(urlAddress).post(requestBody).build();
okHttpClient.newCall(request).enqueue(callback);
}
public static void sendMultipart(String urlAddress, RequestBody requestBody, Callback callback) {
// ,
// RequestBody requestBody = new MultipartBody.Builder()
// .setType(MultipartBody.FORM)
// .addFormDataPart("title", "wangshu")
// .addFormDataPart("image", "wangshu.jpg",
// RequestBody.create(MEDIA_TYPE_PNG, new File("/sdcard/wangshu.jpg")))
// .build();
// private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");
Request request = new Request.Builder().header("Authorization", "Client-ID " + "...").url(urlAddress).post(requestBody).build();
okHttpClient.newCall(request).enqueue(callback);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.