多部分实体文件上传 java.lang.ArrayIndexOutOfBoundsException

Posted

技术标签:

【中文标题】多部分实体文件上传 java.lang.ArrayIndexOutOfBoundsException【英文标题】:Multipart entity file uploading java.lang.ArrayIndexOutOfBoundsException 【发布时间】:2017-02-20 19:31:50 【问题描述】:

带有文件数组的多部分实体文件上传。 我在下面提到了错误代码,请帮我解决这个问题。异常 java.lang.ArrayIndexOutOfBoundsException: length=2;指数=2。 提前致谢。

代码:

try
        int i = 0;
        HttpEntity httpEntity = null;
        HttpResponse httpResponse = null;
        HttpClient httpClient = new DefaultHttpClient();
        int selectedImgLength = selectedItems.size();
        File[] mfile = new File[selectedImgLength];
        for( i = 0; i<selectedImgLength;i++)
            //mfile[i]= selectedItems.get(i);// Error InCompatiable type
            mfile[i] = new File(selectedItems.get(i));
        
        HttpPost httpPost = new HttpPost(url);
        MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
        entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        entityBuilder.addPart( "userfile[" + i + "]", new FileBody(mfile[i]));
        HttpEntity entity = entityBuilder.build();
        httpPost.setEntity(entity);

        httpResponse = httpClient.execute(httpPost);
        httpEntity = httpResponse.getEntity();
        response = EntityUtils.toString(httpEntity);
        System.out.println("POST IMAGE Response"+response);
    catch(Exception e)e.printStackTrace();

【问题讨论】:

我可以知道为什么我的问题被否决了。请给我评论,这将有助于改进堆栈中的提问。 【参考方案1】:

当你这样做时

entityBuilder.addPart( "userfile[" + i + "]", new FileBody(mfile[i]));

您已经退出了 for 循环,并且 i 的大小已与 selectedImgLength 相等,因此您将得到一个 ArrayIndexOutOfBoundsException

尝试更改,以便将文件添加到 for 循环中的 entityBuilder

【讨论】:

谢谢兄弟,对不起,我犯了一个大错误。感谢您的指导。现在我修好了。

以上是关于多部分实体文件上传 java.lang.ArrayIndexOutOfBoundsException的主要内容,如果未能解决你的问题,请参考以下文章

使用 Retrofit MultiPart 实体上传文件/图像是不是已加密?

改造图片上传无法处理的实体错误

为啥没有 java.lang.Array 类?如果一个java数组是一个对象,它不应该扩展对象吗?

通过 REST API 上传多部分文件会损坏文件并增加文件大小

400 多部分文件上传错误请求

HttpUrlConnection 多部分文件上传与progressBar