Загрузить файл с помощью Windows Forms в веб-службу ASP.NET (ASMX) - PullRequest
2 голосов
/ 21 октября 2011

Я хочу загрузить файл с помощью приложения Windows в веб-службу, чтобы веб-служба могла обработать файл.

Скажите, пожалуйста, как мне этого добиться.

Я только знаю, что могу использовать веб-сервис с Windows-формами для отправки только строк, int, этих типов. Но как насчет файла.

Любая помощь приветствуется

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Если используется WebService, обычно мы определяем определенный веб-метод, который принимает параметр байтового массива и строковый параметр, например

public void UploadFile(bytes as Byte(), filename as String)

И затем мы можем легко вызвать его в приложении .NET, так какмы можем использовать WSDL.EXE или VS.NET для создания прокси-класса easytouse.

Ссылка на ссылку

1 голос
/ 21 октября 2011

Как сказал Уил Ву, вы всегда можете объявить веб-метод, который принимает байт [] в качестве входных данных в вашем веб-сервисе, но если вам не нравится отправлять байтовый массив, как он есть в вызове вашего веб-сервиса, вы можетевсегда кодируйте byte [] в строку 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;
        }
    }

КлиентГенерация строки Side Base64

    public string ConvertFileToBase64String(string fileName)
    {
        byte[] fileContent = System.IO.File.ReadAllBytes(fileName);
        return Convert.ToBase64String(fileContent);
    }

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

...