gpt4 book ai didi

java - Android okHttp addFormDataPart 为多个图像动态

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:20 25 4
gpt4 key购买 nike

我已经给出了答案 Uploading a large file in multipart using OkHttp 但我无法上传多张图片。

我想一次动态上传 1 到 10 图片。

RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart(KEY_PHOTO_CAPTION, photoCaption)
.addFormDataPart(KEY_FILE, "profile.png", RequestBody.create(MEDIA_TYPE_PNG, sourceFile))
.build();

我有 PhotoCaption 类的 ArrayList,它有 captionPhotourlPhoto 那么我如何addFormDataPart()

我正在考虑制作循环并多次调用此函数ArrayList 大小。

addFormDataPart()动态使用有什么解决办法吗?

最佳答案

我在这里创建了上传多张图片的功能。

/**
* Here I am uploading MultipleImages from List of photoCaption
* Sending photoCaption with URL and Caption of Photo...
*
* @param albumId
* @param photoCaptions
* @return
*/
public static JSONObject uploadAlbumImage(String albumId, ArrayList<PhotoCaption> photoCaptions) {

try {

MultipartBuilder multipartBuilder = new MultipartBuilder().type(MultipartBuilder.FORM);

int length = photoCaptions.size();
int noOfImageToSend = 0;
for(int i = 0; i < length; i++) {
/**
* Getting Photo Caption and URL
*/
PhotoCaption photoCaptionObj = photoCaptions.get(i);
String photoUrl = photoCaptionObj.getPhotoUrl();
String photoCaption = photoCaptionObj.getPhotoCaption();

File sourceFile = new File(photoUrl);

if(sourceFile.exists()) {
/** Changing Media Type whether JPEG or PNG **/
final MediaType MEDIA_TYPE = MediaType.parse(FileUtils.getExtension(photoUrl).endsWith("png") ? "image/png" : "image/jpeg");

/** Adding in MultipartBuilder **/
multipartBuilder.addFormDataPart(KEY_IMAGE_CAPTION + i, photoCaption);
multipartBuilder.addFormDataPart(KEY_IMAGE_NAME + i, sourceFile.getName(), RequestBody.create(MEDIA_TYPE, sourceFile));

/** Counting No Of Images **/
noOfImageToSend++;
}
}

RequestBody requestBody = multipartBuilder
.addFormDataPart(KEY_ALBUM_ID, albumId)
.addFormDataPart(KEY_IMAGE_COUNT, String.valueOf(noOfImageToSend))
.build();

Request request = new Request.Builder()
.url(URL_ALBUM_UPLOAD_IMAGE)
.post(requestBody)
.build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();

/** Your Response **/
String responseStr = response.body().string();

Log.i(TAG, "responseStr : "+ responseStr);

return new JSONObject(responseStr);

} catch (UnknownHostException | UnsupportedEncodingException e) {
Log.e(TAG, "Error: " + e.getLocalizedMessage());
} catch (Exception e) {
Log.e(TAG, "Other Error: " + e.getLocalizedMessage());
}
return null;
}

希望对您有所帮助。

关于java - Android okHttp addFormDataPart 为多个图像动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34395873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com