Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用multipart.Part发送多个文件_Android_Email_Retrofit2_Multipart - Fatal编程技术网

Android 使用multipart.Part发送多个文件

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

我试图用gmail发送多个文件(图像),但我无法发送。我曾尝试将多部分放入数组中,但没有将文件放入一封邮件中,而是发送了两封邮件。我的代码如下:

接口:

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