Android 使用multipart.Part发送多个文件
我试图用gmail发送多个文件(图像),但我无法发送。我曾尝试将多部分放入数组中,但没有将文件放入一封邮件中,而是发送了两封邮件。我的代码如下: 接口:Android 使用multipart.Part发送多个文件,android,email,retrofit2,multipart,Android,Email,Retrofit2,Multipart,我试图用gmail发送多个文件(图像),但我无法发送。我曾尝试将多部分放入数组中,但没有将文件放入一封邮件中,而是发送了两封邮件。我的代码如下: 接口: public interface EmailService { @Multipart @POST("/send/email") Call<OnlineAushadiModel> sendEmailOnlineAushadi( @Part("FROM") Reques
public interface EmailService {
@Multipart
@POST("/send/email")
Call<OnlineAushadiModel> sendEmailOnlineAushadi(
@Part("FROM") RequestBody requestFrom,
@Part("TO") RequestBody requestTo,
@Part("SUBJECT") RequestBody requestSubject,
@Part("MailContain") RequestBody requestMailContain,
@Part("FileName") RequestBody requestFileName,
}
公共接口电子邮件服务{
@多部分
@POST(“/send/email”)
致电SendEmailOnline Aushadi(
@部分(“来源”)请求主体请求来源,
@部分(“至”)请求主体请求方,
@部分(“主体”)请求主体请求主体,
@部分(“邮件包含”)请求主体请求邮件包含,
@部分(“文件名”)请求主体请求文件名,
}
主要活动:
private void sendData(HashMap<Integer, String> buttons) {
Date today = Calendar.getInstance().getTime();
to = RequestBody.create(MediaType.parse("text/plain"), "to");
from = RequestBody.create(MediaType.parse("text/plain"), "bajracharyasudeep@gmail.com");
subject = RequestBody.create(MediaType.parse("text/plain"), "You have received a new Order.");
content = RequestBody.create(MediaType.parse("text/plain"),
"Name: " + HomeActivity.username + "\n" +
"Contact Number: " + HomeActivity.phoneNumber + "\n" +
"Order date and Time: " + today + "\n" +
"Address For Delivery: " + etDeliveryAddress.getText().toString());
fileName = RequestBody.create(MediaType.parse("text/plain"),"hello");
fileToUpload = new MultipartBody.Part[buttons.size()];
for(int i = 0; i<buttons.size();i++){
Log.e("btnValue", buttons.get(i) + "");
File file = new File(buttons.get(i));
RequestBody mFile = RequestBody.create(MediaType.parse("image/" + fileExtension), file);
fileToUpload[i] = MultipartBody.Part.createFormData("file", file.getName(), mFile);
emailService = ApiClient.getApiClientOnlineAushadi().create(EmailService.class);
Call<OnlineAushadiModel> fileUpload = (Call<OnlineAushadiModel>) emailService.sendEmailOnlineAushadi(to,from,subject,content,fileName,fileToUpload[i]);
fileUpload.enqueue(new Callback<OnlineAushadiModel>() {
@Override
public void onResponse(Call<OnlineAushadiModel> call, Response<OnlineAushadiModel> response) {
Toast.makeText(getActivity(), "Success " + response.message(), Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Call<OnlineAushadiModel> call, Throwable t) {
Log.e("error",t.getMessage() + "");
}
});
}
private void sendData(HashMap按钮){
Date today=Calendar.getInstance().getTime();
to=RequestBody.create(MediaType.parse(“text/plain”),“to”);
from=RequestBody.create(MediaType.parse(“text/plain”),”bajracharyasudeep@gmail.com");
subject=RequestBody.create(MediaType.parse(“text/plain”),“您收到了一个新订单。”);
content=RequestBody.create(MediaType.parse(“text/plain”),
名称:“+HomeActivity.username+”\n+
联系人号码:“+HomeActivity.phoneNumber+”\n+
订单日期和时间:“+今天+”\n+
“交付地址:”+etDeliveryAddress.getText().toString());
fileName=RequestBody.create(MediaType.parse(“text/plain”),“hello”);
fileToUpload=新的MultipartBody.Part[buttons.size()];
对于(inti=0;i您不应该在循环中上载文件。就像代码示例一样
private void CallAPI() {
boolean HaveFile;
final ProgressDialog pd = new ProgressDialog(this);
pd.setMessage("Uploading...");
pd.setCancelable(false);
pd.show();
ArrayList<MultipartBody.Part> body = new ArrayList<>();
//image path is a string list of seleted files path
if (imagePath.size() != 0) {
for (int i = 0; i < imagePath.size(); i++) {
//creating a file
File file = new File(imagePath.get(i));
//creating request body for file
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
body.add(MultipartBody.Part.createFormData("uploaded_file", file.getName(), requestFile));
}
HaveFile=true;
} else {
RequestBody attachmentEmpty = RequestBody.create(MediaType.parse(/*"multipart/form-data"*/"text/plain"), "");
body.add( MultipartBody.Part.createFormData(/*"uploaded_file"*/"attachment", "0736E389-EF21-4286-BEBF-14CCD48B04A6", attachmentEmpty));
HaveFile=false;
}
APIService service =
ServiceGenerator.getclient().create(APIService.class);
Call<String> call = service.uploadMulFiles(body.size() == 0 ? null : body ,to,from,subject,content,fileName);
call.enqueue(new Callback<String>() {
@Override
public void onResponse(@Nullable Call<String> call,
@Nullable Response<String> response) {
if (response != null) {
if (response.isSuccessful()) {
MainActivity.ComObj.ShowToast(activity_new_ticket.this, response.body() + "", Toast.LENGTH_SHORT);
ResetWidjet();
pd.cancel();
} else {
try {
assert response.errorBody() != null;
MainActivity.ComObj.ShowToast(activity_new_ticket.this, response.errorBody().string(), Toast.LENGTH_LONG);
} catch (IOException e) {
e.printStackTrace();
}
pd.cancel();
}
}
}
@Override
public void onFailure(@Nullable Call<String> call,@Nullable Throwable t) {
if (t != null) {
MainActivity.ComObj.ShowToast(activity_new_ticket.this, t.getMessage(), Toast.LENGTH_SHORT);
}
pd.cancel();
}
});
}
private void CallAPI(){
布尔HaveFile;
最终ProgressDialog pd=新ProgressDialog(本);
pd.setMessage(“上传…”);
pd.可设置可取消(假);
pd.show();
ArrayList body=新的ArrayList();
//图像路径是选定文件路径的字符串列表
如果(imagePath.size()!=0){
对于(int i=0;i
希望这将帮助您您不应该在循环中上载文件。就像代码示例一样
private void CallAPI() {
boolean HaveFile;
final ProgressDialog pd = new ProgressDialog(this);
pd.setMessage("Uploading...");
pd.setCancelable(false);
pd.show();
ArrayList<MultipartBody.Part> body = new ArrayList<>();
//image path is a string list of seleted files path
if (imagePath.size() != 0) {
for (int i = 0; i < imagePath.size(); i++) {
//creating a file
File file = new File(imagePath.get(i));
//creating request body for file
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
body.add(MultipartBody.Part.createFormData("uploaded_file", file.getName(), requestFile));
}
HaveFile=true;
} else {
RequestBody attachmentEmpty = RequestBody.create(MediaType.parse(/*"multipart/form-data"*/"text/plain"), "");
body.add( MultipartBody.Part.createFormData(/*"uploaded_file"*/"attachment", "0736E389-EF21-4286-BEBF-14CCD48B04A6", attachmentEmpty));
HaveFile=false;
}
APIService service =
ServiceGenerator.getclient().create(APIService.class);
Call<String> call = service.uploadMulFiles(body.size() == 0 ? null : body ,to,from,subject,content,fileName);
call.enqueue(new Callback<String>() {
@Override
public void onResponse(@Nullable Call<String> call,
@Nullable Response<String> response) {
if (response != null) {
if (response.isSuccessful()) {
MainActivity.ComObj.ShowToast(activity_new_ticket.this, response.body() + "", Toast.LENGTH_SHORT);
ResetWidjet();
pd.cancel();
} else {
try {
assert response.errorBody() != null;
MainActivity.ComObj.ShowToast(activity_new_ticket.this, response.errorBody().string(), Toast.LENGTH_LONG);
} catch (IOException e) {
e.printStackTrace();
}
pd.cancel();
}
}
}
@Override
public void onFailure(@Nullable Call<String> call,@Nullable Throwable t) {
if (t != null) {
MainActivity.ComObj.ShowToast(activity_new_ticket.this, t.getMessage(), Toast.LENGTH_SHORT);
}
pd.cancel();
}
});
}
private void CallAPI(){
布尔HaveFile;
最终ProgressDialog pd=新ProgressDialog(本);
pd.setMessage(“上传…”);
pd.可设置可取消(假);
pd.show();
ArrayList body=新的ArrayList();
//图像路径是选定文件路径的字符串列表
如果(imagePath.size()!=0){
对于(int i=0;i