2012-02-22 79 views
1

我正在做一个ASP .NET网站,其中用户可以上传图片,需要保存到服务器。我可以使用网络服务将用户选择的图像上传到服务器吗?

在整个网站,我试图尽可能最小的客户端和服务器之间的沟通。这意味着onload()我调用Web服务,返回该页面所需的所有数据,然后使用JavaScript处理它们。

到目前为止,它工作得非常完美。当用户希望对其个人资料进行更改时会出现问题。我可以将所有在文本字段中输入的信息和排序信息,并将它们作为参数传递给将其保存到数据库的web服务。我不知道该怎么做,或者甚至有可能将所选图像作为参数传递给webservice。

我使用HTML5:<input type="file">选择映像

+0

是你的问题“如何使用Ajax上传文件?”? – Quentin 2012-02-22 15:51:56

+0

''没有在HTML5中引入,只是说;) – MMM 2012-02-22 15:52:55

+0

我认为问题是“如何使用ajax将文件上传到Web服务”?简单的答案可能是“使用iframe”,尽管它取决于正在使用的Web服务,我想。 – Dave 2012-02-22 16:54:55

回答

1

,当用户点击提交,你可以做类似的页面的代码隐藏在下面的内容:

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

,并保存为二进制数据到数据库中。

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

0

你应该使用HTML的表现公式。但是,你需要改变一些form -tag

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

默认配置的,你可以使用一个iframe作为形式的目标,比页面不会重新加载。如果您使用asp:FileUpload控制,而不是您可以在IFRAME随即反应过来......

<form ... target="youriframe"> 

see this website for a full example

相关问题