Solution proposée et validée par Arthur-Olivier Fortin
this was what worked for me:
` [HttpPost("api/translator")] public async Task<IActionResult> Translator([FromForm] IFormFile document, [FromForm] string sourceLanguage, [FromForm] string targetLanguage) { string translatorPath = _configuration["AzureTranslatorSynchronous:Endpoint"]; string apiVersion = _configuration["AzureTranslatorSynchronous:ApiVersion"]; string key = _configuration["AzureTranslatorSynchronous:SubscriptionKey"]; using var client = new HttpClient(); using var httpRequest = new HttpRequestMessage(HttpMethod.Post, $"{translatorPath}?sourceLanguage={sourceLanguage}&targetLanguage={targetLanguage}&api-version={apiVersion}"); var content = new MultipartFormDataContent(); if (document != null) { var documentContent = new StreamContent(document.OpenReadStream()); documentContent.Headers.ContentType = new MediaTypeHeaderValue(document.ContentType); content.Add(documentContent, "document", document.FileName); } httpRequest.Content = content; httpRequest.Headers.Add("Ocp-Apim-Subscription-Key", key); HttpResponseMessage response = await client.SendAsync(httpRequest); if (response.IsSuccessStatusCode) { // Extraire le nom de fichier et l'extension string originalFileName = Path.GetFileNameWithoutExtension(document.FileName); string fileExtension = Path.GetExtension(document.FileName); // Créer le nouveau nom de fichier avec le suffixe de la langue cible string newFileName = $"{originalFileName}-{targetLanguage}{fileExtension}"; // Chemin du fichier temporaire var filePath = Path.Combine(Path.GetTempPath(), newFileName); // Enregistrer le fichier traduit avec le nouveau nom await using var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None); await response.Content.CopyToAsync(fileStream); fileStream.Close(); // Lire le fichier en tant que tableau d'octets var fileBytes = await System.IO.File.ReadAllBytesAsync(filePath); // Retourner le fichier en tant que blob dans la réponse JSON return Ok(new { fileName = newFileName, fileContent = Convert.ToBase64String(fileBytes) }); } else { var error = await response.Content.ReadAsStringAsync(); _logger.LogError($"Error occurred while calling the translation API: {error}"); return StatusCode((int)response.StatusCode, new { message = "Error occurred while calling the translation API", details = error }); } } `
with a JSON like this
` "AzureTranslatorSynchronous": { "SubscriptionKey": "SERVICE-KEY", "Endpoint": "CUSTOM-ENDPOINT", "ApiVersion" : "2024-05-01" } `
Based on this https://video2.skills-academy.com/en-us/azure/ai-services/translator/document-translation/reference/get-supported-document-formats The correct documentation would be the one from the link for API Version: 2024-05-01. The global link and the link https://<resource-name>.cognitiveservices.azure.com/translator/text/batch/v1.0/batches do not work for me. (Note that there is also JavaScript code that calls the API with forms.)
A bientôt
Alexis
Si cette réponse a répondu à votre question, veuillez « Accepter comme réponse » et voter en utilisant « Pouce levé » afin que la pertinence de ce message s’améliore lorsque quelqu’un dans la communauté recherche une requête similaire