使用 Windows 窗体将文件上传到 ASP.NET Web 服务 (ASMX)

发布于 2024-12-11 03:59:04 字数 160 浏览 0 评论 0原文

我想使用 Windows 应用程序将文件上传到 Web 服务,以便 Web 服务可以处理该文件。

请告诉我如何实现这一目标。

我只知道我可以使用带有 Windows 表单的 Web 服务来仅发送 string、int 这些类型。但是文件呢?

任何帮助表示赞赏

I want to upload a file using windows application to a web service so that web service can process the file.

Please tell me how can i achieve this.

I only know that i can use web service with windows forms to send only string, int, these types. But what about file.

Any help is appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

坏尐絯℡ 2024-12-18 03:59:04

如果使用WebService,一般我们定义某个webmethod
它接受一个字节数组参数和一个字符串参数,例如

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

然后,我们可以轻松地在 .NET 应用程序中调用它,因为我们可以使用
WSDL.EXE 或VS.NET 生成易于使用的客户端代理类。

参考链接

If use WebService, it is general that we define a certain webmethod
which takes a byte array param and a string param such as

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

And then, we can easily call it in .NET application since we can use the
WSDL.EXE or the VS.NET to generate a easytouse client proxy class.

Link to reference

雄赳赳气昂昂 2024-12-18 03:59:04

正如 Will Wu 所说,您始终可以声明一个将 byte[] 作为 Web 服务中的输入的 Web 方法,但如果您不喜欢在 Web 服务调用中发送字节数组,您始终可以对byte[] 从客户端转换为 base64 字符串,并在服务器端解码 byte[]

示例

WebService 示例 Web 方法

    [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);
    }

使用上述方法将文件转换为字符串并将其作为 Web 服务发送到字符串而不是字节数组

As Will Wu said you can always declare a web method that takes a byte[] as input in your web service, but if you don't like to send the byte array as it is in your web service call, you can always encode the byte[] to a base64 string from your client and decode the byte[] on the server side

Example

WebService sample web Method

    [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;
        }
    }

Client Side Base64 string generation

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

use the above method to convert your file to a string and send it to the web service as a string instead of byte array

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文