Я хотел бы опубликовать данные в формате CSV на внешний URL-адрес. URL-адрес требует составной формы, содержащей строку и файл. Мне кажется, что это требует сохранения файла на диск, прежде чем я могу вызвать URL. Можно ли использовать этот URL (это служба геокодирования Бюро переписи населения США) без сохранения файла на диск? Например, могу ли я использовать ByteArrayInputStream
, который только временно живет в памяти? Ниже приведен мой исходный код, который включает в себя сохранение файла на диск.
String benchmark = "9";
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost("https://geocoding.geo.census.gov/geocoder/locations/addressbatch");
MultipartEntityBuilder builder2 = MultipartEntityBuilder.create();
builder2.addTextBody("benchmark", benchmark, ContentType.TEXT_PLAIN);
File f = new File("UscbGeocodingInput.csv");
FileInputStream is = new FileInputStream(f);
builder2.addBinaryBody(
"addressFile",
is,
ContentType.APPLICATION_OCTET_STREAM,
f.getName());
HttpEntity multipart = builder2.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response = httpClient.execute(uploadFile);
Я не хочу сохранять файл на диск, потому что он должен существовать только временно, пока мы не вызовем внешний URL. Я попытался использовать входной поток байтового массива вместо F ileInputStream
, но тогда запрос завершается неудачно с 400 error
.