在安卓中使用多部分实体发送图像数组



我想使用多部分实体发送图像数组喜欢想要发送多个图像。签名的参数如下

entity.addPart("files[]", .....);

我该怎么做?

您可以使用HTTP

mime库(最好是4.3.3)和HTTP post将文件上传到服务器。PHP服务器会将图像识别为FILE,这是您在这种情况下所必需的。我创建了一个类,可以帮助我将图像或任何文件上传到我的服务器

public class FileUploadHelper extends AsyncTask<Void, Void, Void> {
    private MultipartEntityBuilder multipartEntity;
    private String URL;
    public FileUploadHelper(String URL) {
        multipartEntity = MultipartEntityBuilder.create();
        this.URL = URL;
    }
    @SuppressLint("TrulyRandom")
    @Override
    protected Void doInBackground(Void... arg0) {
        try {
            multipartEntity.addTextBody("<YOUR STRING KEY>", "<STRING VALUE>");
            multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
            HttpClient httpclient;
            httpclient = new DefaultHttpClient();
            httpclient.getConnectionManager().closeExpiredConnections();
            HttpPost httppost = new HttpPost(URL);
            httppost.setEntity(multipartEntity.build());
            HttpResponse response = httpclient.execute(httppost);
            int responseCode = response.getStatusLine().getStatusCode();
            String serverResponse = EntityUtils.toString(response.getEntity());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public void addFile(String key, File newFile) throws FileNotFoundException {
        if (newFile.exists()) {
            multipartEntity.addBinaryBody(key, newFile);
        } else {
            throw new FileNotFoundException("No file was found at the path " + newFile.getPath());
        }
    }
}

要使用此类,请创建 File Uploader 类的对象,然后调用其 addFile() 函数并调用 execute(),因为此类扩展了 AsyncTask。在您的代码中,您已经将 File 对象作为

File file = new File(Environment.getExternalStorageDirectory(),
                    "tmp_avatar_" + String.valueOf(System.currentTimeMillis())
                            + ".jpg");

只需将此对象传递给 addFile()。addFile() 的键将是 "files[]" 这是您需要的。请注意,您可能无法一次性发送文件数组,因为密钥文件[]将被下一个文件覆盖,因此只会上传最后一个图像,因此最好使用相同的键"files[]"多次发送请求,具体取决于您必须发送的文件数量

希望这对你有帮助

相关内容

  • 没有找到相关文章

最新更新