我可以使用网络服务将用户选择的图像上传到服务器吗?
问题描述:
我正在做一个ASP .NET网站,其中用户可以上传图片,需要保存到服务器。我可以使用网络服务将用户选择的图像上传到服务器吗?
在整个网站,我试图尽可能最小的客户端和服务器之间的沟通。这意味着onload()我调用Web服务,返回该页面所需的所有数据,然后使用JavaScript处理它们。
到目前为止,它工作得非常完美。当用户希望对其个人资料进行更改时会出现问题。我可以将所有在文本字段中输入的信息和排序信息,并将它们作为参数传递给将其保存到数据库的web服务。我不知道该怎么做,或者甚至有可能将所选图像作为参数传递给webservice。
我使用HTML5:<input type="file">
选择映像
答
,当用户点击提交,你可以做类似的页面的代码隐藏在下面的内容:
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);
,并保存为二进制数据到数据库中。
作为警告,您可能需要在网页上添加长度检查以防止有人上传太大的图像,否则您的服务器可能会陷入困境。
答
你应该使用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">
是你的问题“如何使用Ajax上传文件?”? – Quentin 2012-02-22 15:51:56
''没有在HTML5中引入,只是说;) – MMM 2012-02-22 15:52:55
我认为问题是“如何使用ajax将文件上传到Web服务”?简单的答案可能是“使用iframe”,尽管它取决于正在使用的Web服务,我想。 – Dave 2012-02-22 16:54:55