Невозможно напрямую использовать Файл. Не существует реализации для преобразования вашего запроса в HttpRequestMessage<java.util.Optional<java.io.File>>
.
Решение - загрузить файл с multipart/form-data
. Уже есть сообщение об этом, вы можете сослаться на: загрузка с multipart / form-data . Существует также известная проблема: функция Azure потеряет некоторые нечитаемые байты, для ее решения вы можете увидеть обновление в этом ответе.
Еще одно более простое решение - продолжать использовать байтовый массив. Однако в то же время вы можете поместить имя файла и другие метаданные в параметры запроса. Например: ?filename=xxx&other=xxxx
.
Затем вы можете получить содержимое файла из байтового массива и все метаданные из параметров запроса:
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<byte[]>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
byte[] body = request.getBody().get();
Map<String, String> queryParameters = request.getQueryParameters();
String fileName = queryParameters.get("fileName");
return request.createResponseBuilder(HttpStatus.OK).body(fileName + " -> " + new String(body)).build();
}
![enter image description here](https://i.stack.imgur.com/PUvjn.png)