利用WebService发布图片文件

服务器端:

1.新建一个Asp.net空网站RGImageServer

2.新建一个WebService项目ImageService,项目新增文件ImageService.asmx,添加方法GetTile()。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Services;
 6 using System.IO;
 7 using System.Configuration;
 8
 9 namespace RGImageServer
10 {
11     /// <summary>
12     /// ImageServices 的摘要说明
13     /// </summary>
14     [WebService(Namespace = "http://tempuri.org/")]
15     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
16     [System.ComponentModel.ToolboxItem(false)]
17     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
18     // [System.Web.Script.Services.ScriptService]
19     public class ImageServices : System.Web.Services.WebService
20     {
21
22         [WebMethod]
23         public string HelloWorld()
24         {
25             return "Hello World";
26         }
27         private byte[] Stream2Bytes(Stream theStream)
28         {
29             int num;
30             MemoryStream stream = new MemoryStream();
31             while ((num = theStream.ReadByte()) != -1)
32             {
33                 stream.WriteByte((byte)num);
34             }
35             theStream.Close();
36             return stream.ToArray();
37         }
38         [WebMethod]
39         public void GetTile(string imageName)
40         {
41             string filename = ConfigurationManager.AppSettings["ImagePath"] + @"\" + imageName;
42             HttpContext context = this.Context;
43             if (File.Exists(filename))
44             {
45                 try
46                 {
47                     FileStream theStream = File.OpenRead(filename);
48                     context.Response.ContentType = "image/png";
49                     byte[] buffer = Stream2Bytes(theStream);
50                     context.Response.OutputStream.Write(buffer, 0, buffer.Length);
51                 }
52                 catch (Exception)
53                 {
54                     context.Response.StatusCode = 500;
55                 }
56             }
57         }
58     }
59 }

3.配置WebConfig文件,发布服务

 1 <?xml version="1.0" encoding="utf-8"?>
 2
 3 <!--
 4   有关如何配置 ASP.NET 应用程序的详细消息,请访问
 5   http://go.microsoft.com/fwlink/?LinkId=169433
 6   -->
 7
 8 <configuration>
 9   <system.web>
10     <compilation debug="true" targetFramework="4.0" />
11     <webServices>
12       <protocols>
13         <add name="HttpGet" />
14         <add name="HttpPost" />
15         <add name="HttpSoap" />
16       </protocols>
17     </webServices>
18   </system.web>
19   <appSettings>
20     <add key="ImagePath" value="E:\"/>
21   </appSettings>
22 </configuration>

客户端:

1.调用下载图片代码如下:

 1 public partial class Form1 : Form
 2     {
 3         public Form1()
 4         {
 5             InitializeComponent();
 6         }
 7         Stream ContentStream;
 8         HttpWebResponse response = null;
 9         string ContentType;
10         string ContentEncoding;
11         int ContentLength = 0;
12         int BytesProcessed;
13         private void button1_Click(object sender, EventArgs e)
14         {
15             ImageServices server = new ImageServices();
16             string Url = "http://localhost:6235/ImageServices.asmx/GetTile?imageName=aa.png";
17             string SavedFilePath = "D:\\bb.png";
18             // Download to file
19             string targetDirectory = Path.GetDirectoryName(SavedFilePath);
20             if (targetDirectory.Length > 0)
21                 Directory.CreateDirectory(targetDirectory);
22             ContentStream = new FileStream(SavedFilePath, FileMode.Create);
23             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
24             request.ContentType = "text/xml";
25             using (response = request.GetResponse() as HttpWebResponse)
26             {
27                 // only if server responds 200 OK
28                 if (response.StatusCode == HttpStatusCode.OK)
29                 {
30                     ContentType = response.ContentType;
31                     ContentEncoding = response.ContentEncoding;
32
33                     // Find the data size from the headers.
34                     string strContentLength = response.Headers["Content-Length"];
35                     if (strContentLength != null)
36                     {
37                         ContentLength = int.Parse(strContentLength);
38                     }
39                     //缓存字节数组,大小1500byte
40                     byte[] readBuffer = new byte[1500];
41                     using (Stream responseStream = response.GetResponseStream())
42                     {
43                         while (true)
44                         {
45                             //  Pass do.readBuffer to BeginRead.
46                             int bytesRead = responseStream.Read(readBuffer, 0, readBuffer.Length);
47                             if (bytesRead <= 0)
48                                 break;
49                             ContentStream.Write(readBuffer, 0, bytesRead);
50                             BytesProcessed += bytesRead;
51                         }
52                     }
53                     ContentStream.Close();
54                     ContentStream.Dispose();
55                     ContentStream = null;
56                 }
57             }
58
59
60         }
61     }

利用WebService发布图片文件

时间: 2024-09-30 09:15:42

利用WebService发布图片文件的相关文章

利用Selenium实现图片文件上传的两种方式介绍

在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当开发直接使用file类型的input实现图片文件的上传时,实例:<input type="file" name=''filename"> 我们可以直接利用Selenium提供的方法实现文件上传,但是因为依赖开发的实现,而且目前实现基本都会利用框架,所以这种实现方式有很

C#利用WebService接口下载文件

1 WebTest.RtTfSimDataInterface test = new WebTest.RtTfSimDataInterface(); 2 //string strBasic = test.GetTfBasicDataInfo("admin", "123", "11", true); 3 string strRealTime = test.GetTfRealTimeDataInfo("admin", "1

利用VS2008发布一个简单的webservice

一个开发好的webservice,怎样发布出去,供其他电脑访问呢? 本文将介绍如何发布一个简单的webservice,其中的内容都是在网上查看别人文章,自己仿照着做了一遍,因此,难免会发生错误,如果发现错误,希望各位能够指出,谢谢!! 1.准备工作 1.1一个C#开发好的webservice实例.参考下面例子: http://www.cnblogs.com/LCCRNblog/p/3716406.html 1.2安装好IIS,安装过程: http://www.cnblogs.com/LCCRNb

利用一个ASP.NET Core应用来发布静态文件

虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件的请求.针对不同格式的静态文件请求的处理,ASP.NET Core为我们提供了三个中间件,它们将是本系列文章论述的重点.不过在针对对它们展开介绍之前,我们照理通过一些简单的实例来体验一下如何在一个ASP.NET Core应用中发布静态文件.[本文已经同步到<ASP.NET Core框架揭秘>之中]

java利用Base64编码和解码图片文件

1.编码与解码代码如下所示: import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.image

客户端Android和Webservice之间的图片文件传输解决方法

最近在写webservice接口 给客户端提供数据和接收客户端发来的数据.当数据类型为图片类型的文件时候,先把文件转为流,然后用Base64编码成字节流的字符串,传输的还是字符串. 客户端代码: public static void main(String[] args) throws IOException { File file=new File("d:/272.jpg"); FileInputStream fis = new FileInputStream(file); Byte

JAVA利用axis2发布webservice

Axis2与CXF是现在很主流的WebService开发框架(java6也已经支持了),项目上还都是基本上用前两种做开发,今天记录一下我安装Axis2插件在eclipse中的安装和写一个简单的测试代码. 一. eclipse的版本为Luna Release (4.4.0) Axis2的版本是1.6.2 下载地址为: 1).Axis2 Binary Distribution(1.6.2):http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/

IIS下 多站点 利用虚拟目录 访问共用(图片)文件夹

预期目的:站点A 和 站点B 共用同一个图片文件夹C 实现方式是: 在站点下添加虚拟目录 使虚拟目录指向共用文件夹 站点下的页面 使用图片的访问方式示意:<image src="C/1.png" />其中 C为虚拟目录 IIS的站点布局示意: --网站----Default Web Site------应用程序A http://localhost/A/index.html--------虚拟目录C 指向D:\www\C------应用程序B http://localhost

Web的形式发布静态文件

Web的形式发布静态文件 虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件的请求.针对不同格式的静态文件请求的处理,ASP.NET Core为我们提供了三个中间件,它们将是本系列文章论述的重点.不过在针对对它们展开介绍之前,我们照理通过一些简单的实例来体验一下如何在一个ASP.NET Core应用中发布静态文件.[本文已经同步到<ASP.NET Co