Загрузка файла с помощью Windows Forms в ASP.NET веб-сервис (ASMX)
Я хочу загрузить файл с помощью приложения windows в веб-службу, чтобы веб-служба могла обработать файл.
Пожалуйста, скажите мне, как я могу этого достичь.
Я знаю только, что могу использовать веб-службу с windows forms для отправки только string, int, эти типы. Но как насчет файла?
Любая помощь ценится
2 ответов:
Как сказал Уилл Ву, вы всегда можете объявить веб-метод, который принимает байт[] в качестве входных данных в вашем веб-сервисе, но если вам не нравится отправлять массив байтов, как это происходит в вызове веб-сервиса, вы всегда можете кодировать байт[] в строку base64 от вашего клиента и декодировать байт[] на стороне сервера
Пример
WebService пример веб-метода
[WebMethod] public bool UploadFile(string fileName, string uploadFileAsBase64String) { try { byte[] fileContent = Convert.FromBase64String(uploadFileAsBase64String); string filePath = "UploadedFiles\\" + fileName; System.IO.File.WriteAllBytes(filePath, fileContent); return true; } catch (Exception) { return false; } }Генерация строк Base64 на стороне клиента
public string ConvertFileToBase64String(string fileName) { byte[] fileContent = System.IO.File.ReadAllBytes(fileName); return Convert.ToBase64String(fileContent); }Используйте вышеописанный метод, чтобы преобразовать файл в строку и отправить его веб-службе в виде строки вместо массива байтов
Если использовать WebService, то обычно мы определяем определенный webmethod который принимает массив байтов param и строку param, такую как
public void UploadFile(bytes as Byte(), filename as String)И затем, мы можем легко вызвать его в приложении .NET, так как мы можем использовать язык WSDL.EXE или the VS.NET для создания прокси-класса клиента easytouse.
Comments