https://do.convertapi.com/Pdf2PowerPoint без указания физического местоположения файла
Я звоню API https://do.convertapi.com/Pdf2PowerPoint
Их веб-сайт для деталей API является https://www.convertapi.com/
Для загрузки файла в свою документацию C# они использовали функцию client.UploadFile(), которая ожидает параметр имени файла из физического местоположения. в моем случае у меня есть байты PDF-файла, поступающие на лету, без сохранения их в физическом местоположении, и я хочу загрузить эти байты вместо этого. Я использую функцию client.UploadData(), которая ожидает байтовый массив, и я должен предоставить это. но их API выдает ошибку и просит предоставить имя файла, который должен.
Я думаю, что разработчики API смогут только ответить. Но если у вас, ребята, есть идея, если я делаю какую-либо ошибку, чтобы загрузить файл. пожалуйста, предложите ваш обходной путь.
Пожалуйста, найдите мой код ниже в соответствии с просьбой
var client = new WebClient();
var data = new NameValueCollection();
data.Add("OutputFileName", "TestOutput.pptx"); //Optional
data.Add("File", "Revised.pdf");
data.Add("ApiKey", "484700111"); //API Key must be set if you purchased membership with credits. Please login to your control panel to find out your API Key http://www.convertapi.com/prices
try
{
client.QueryString.Add(data);
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//I am using ReadAllBytes Approach for now as in my practical scenario I am going to get bytes instead of sending file from Physical location
byte[] Arr = File.ReadAllBytes(@"D:\PPTTest\Level I and II Revised.pdf");
// Error here : File Parameter can not be null
var response = client.UploadData("https://do.convertapi.com/Pdf2PowerPoint", Arr);
var responseHeaders = client.ResponseHeaders;
var path = Path.Combine(@"D:\PPTTest\", responseHeaders["OutputFileName"]);
File.WriteAllBytes(path, response);
//Console.WriteLine("The conversion was successful! The word file {0} converted to PDF and saved at {1}", fileToConvert, path);
}
catch (WebException e)
{
Console.WriteLine("Exception Message :" + e.Message);
if (e.Status == WebExceptionStatus.ProtocolError)
{
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
}
}
Спасибо хира
1 ответ
Код взят из этого поста. Вы должны загрузить файл с запросом multipart/form-data следующим образом:
HttpClient httpClient = new HttpClient();
MultipartFormDataContent form = new MultipartFormDataContent();
form.Add(new StringContent(username), "username");
form.Add(new StringContent(useremail), "email");
form.Add(new StringContent(password), "password");
form.Add(new ByteArrayContent(imagebytearraystring, 0, imagebytearraystring.Count()), "profile_pic", "hello1.jpg");
HttpResponseMessage response = await httpClient.PostAsync("PostUrl", form);