【问题标题】:can i upload a user-selected image to server using web service?我可以使用网络服务将用户选择的图像上传到服务器吗?
【发布时间】:2025-12-06 14:05:01
【问题描述】:

我正在做一个 ASP .NET 网站,用户可以在该网站上上传需要保存到服务器的图像。

在整个网站中,我试图尽可能减少客户端和服务器之间的通信。这意味着在 onload() 上,我调用返回该页面所需的所有数据的 Web 服务,然后使用 javascript 操作它们。

到目前为止,它运行良好。当用户希望更改他的个人资料时,就会出现问题。我可以获取在文本字段中输入的所有信息并进行排序,并将它们作为参数传递给将它们保存到数据库的 web 服务。我不知道该怎么做,或者如果可能的话,就是将所选图像作为参数传递给 web 服务。

我正在使用 html5:<input type="file"> 进行图像选择

【问题讨论】:

  • 您的问题是“如何使用 Ajax 上传文件?”?
  • <input type="file"> 没有在 HTML5 中引入,只是说 ;)
  • 我认为问题是“如何使用 ajax 将文件上传到 Web 服务”?简短的回答可能是“使用 iframe”,尽管我想这取决于使用的 Web 服务。

标签: c# javascript asp.net web-services image


【解决方案1】:

如果您改用asp:FileUpload 控件,当用户单击提交时,您可以在页面的代码隐藏中执行类似于以下的操作:

protected void UploadButton_Click( object sender, EventArgs e ) {
    if ( !ImageUpload.HasFile ) {
        return;
    }

    string imageBase64 = System.Convert.ToBase64String( ImageUpload.FileBytes );

    YourService service = new YourService();

    service.UploadImage( imageBase64 );

这当然假设您的服务有一个名为 UploadImage 的方法,该方法将字符串作为参数。

然后在后端,将字符串转换为字节数组:

byte[] imageArray = System.Convert.FromBase64String( base64ImageData );

并将其作为二进制数据保存到您的数据库中。

作为警告,您可能需要在网页上添加长度检查,以防止有人上传太大的图片...否则您的服务器可能会陷入困境。

【讨论】:

    【解决方案2】:

    您应该使用 html 公式。但是你需要更改form-tag的一些默认配置

    <form action="url" method="post" enctype="multipart/form-data">
        <input type="file" name="my-file" />
    </form>
    

    并且您可以使用 iframe 作为表单的目标,而不是重新加载页面。然后你可以对 iframe 做出反应...

    <form ... target="youriframe">
    

    see this website for a full example

    【讨论】: