Загрузка файла с помощью Windows Forms в ASP.NET веб-сервис (ASMX)



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



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

Я знаю только, что могу использовать веб-службу с windows forms для отправки только string, int, эти типы. Но как насчет файла?



Любая помощь ценится

707   2  

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

    Ничего не найдено.