Если у вас есть контроль над API, который отправляет файл, вы можете убедиться, что API устанавливает правильный заголовок расположения содержимого .Затем в коде, где вы получаете файл, вы можете прочитать заголовок расположения содержимого и найти исходное имя файла из него.
Вот код, заимствованный из файла fileonsload, который считывает имя файла из заголовка расположения содержимого.
private String getFileName(String pContentDisposition) {
String fileName = null;
if (pContentDisposition != null) {
String cdl = pContentDisposition.toLowerCase();
if (cdl.startsWith(FORM_DATA) || cdl.startsWith(ATTACHMENT)) {
ParameterParser parser = new ParameterParser();
parser.setLowerCaseNames(true);
// Parameter parser can handle null input
Map params = parser.parse(pContentDisposition, ';');
if (params.containsKey("filename")) {
fileName = (String) params.get("filename");
if (fileName != null) {
fileName = fileName.trim();
} else {
// Even if there is no value, the parameter is present,
// so we return an empty file name rather than no file
// name.
fileName = "";
}
}
}
}
return fileName;
}
Вам нужно прочитать заголовок размещения содержимого, а затем разделить его с помощью ";"сначала, а затем снова разделите каждый токен с помощью «=», чтобы получить пары «имя-значение».