Sunil Edupuganti Ответов: 1

Как загрузить pdf файл в web api из windows forms C#


Привет,

Может ли кто - нибудь предоставить мне пример программы для загрузки pdf-файла в веб-api в windows forms C#

Что я уже пробовал:

Пробовал с различными примерами из stack overflow, но мне ничего не помогло.

Richard MacCutchan

Загрузка PDF-файла-это то же самое, что и загрузка любого другого типа. Вам просто нужно убедиться, что веб-сервер знает, что делать с файлом, который он получает.

Но поскольку вы не предоставили никакой информации ни о своем коде, ни об api, невозможно сделать какие-либо полезные предложения.

MadMyche

В вашем вопросе участвуют 2 отдельных проекта, и вы не предоставили код ни для одного из них. Вы также не предоставили никаких результатов, исключений или журналов из этих попыток. Как вы ожидаете, что мы поможем вам устранить неполадки и исправить их?

Если бы это была моя шахта для работы - я бы получил рабочую часть загрузки веб-API, доступ к которой можно получить через простую форму на веб-странице. Как только я получу эту работу, то попробую получить доступ через ваш проект win-forms

1 Ответов

Рейтинг:
2

dnxit

Вот два примера, которые вы можете попробовать, вероятно, вот как будет выглядеть ваш код веб-api

public Task<HttpResponseMessage> UploadFile()
{
	HttpRequestMessage request = Request;
	if (!request.Content.IsMimeMultipartContent())
	{
		throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
	}

	var root = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/uploads");
	var provider = new MultipartFormDataStreamProvider(root);
	var task = request.Content.ReadAsMultipartAsync(provider).
		ContinueWith<HttpResponseMessage>(o =>
		{
			var file1 = provider.BodyPartFileNames.First().Value;
			// this is the file name on the server where the file was saved 

			return new HttpResponseMessage()
			{
				<big></big>StatusCode = System.Net.HttpStatusCode.OK
			};
		});

	return task;
}


Вы можете использовать Http-клиент для вызова и загрузки вашего файла, как показано ниже.

private bool UploadFile(string url, string filePath, string srcFilename, string destFileName)
{
	var uploaded = false;
	try
	{
		var httpClient = new HttpClient();
		var fileStream = File.Open(srcFilename, FileMode.Open);
		var fileInfo = new FileInfo(srcFilename);
		var content = new MultipartFormDataContent();
		content.Headers.Add("filePath", filePath);
		content.Add(new StreamContent(fileStream), "\"file\"", string.Format("\"{0}\"", destFileName + fileInfo.Extension));

		var task = httpClient.PostAsync(url, content).ContinueWith(t =>
		{
			if (t.Status == TaskStatus.RanToCompletion)
			{
				var response = t.Result;
				if (response.StatusCode == System.Net.HttpStatusCode.OK)
				{
					uploaded = true;
				}
			}

			fileStream.Dispose();
		});

		task.Wait();
		httpClient.Dispose();
	}
	catch (Exception ex)
	{
		uploaded = false;
		throw ex;
	}

	return uploaded;
}