ASP.NET中利用WebClient上传图片到远程服务的方法

一、客户端

1.页面

<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
    <input id="MyFile" type="file" runat="server" />
    <br />
    <br />
    <asp:Button ID="Button1" runat="server" Text="上载文件" OnClick="Button1_Click"></asp:Button>
  </form>

2.后台

System.Web.HttpFileCollection oFiles = System.Web.HttpContext.Current.Request.Files;
   string FilePath = oFiles[0].FileName;
   string FileName = FilePath.Substring(FilePath.LastIndexOf("\\") + 1);
   byte[] b = new byte[oFiles[0].ContentLength];
   System.IO.Stream fs = (System.IO.Stream)oFiles[0].InputStream;
   fs.Read(b, 0, oFiles[0].ContentLength);
   string postData = "data=" + HttpUtility.UrlEncode(Convert.ToBase64String(b));
   var webclient = new WebClient();
   webclient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
   byte[] byteArray = Encoding.UTF8.GetBytes(postData);
   //byte[] buffer = webclient.UploadData("http://localhost/datapush/DataPush.ashx", "POST", byteArray);//ashx
   byte[] buffer = webclient.UploadData("http://localhost/datapush/WebServiceDataPush.asmx/DataPush", "POST", byteArray);//asmx
   var msg = Encoding.UTF8.GetString(buffer);
   Response.Write(msg);

二、服务端

string msg = "";
   byte[] filedata = Convert.FromBase64String(context.Request["data"]);
   if (filedata.Length == 0)
   {
    msg= "{\"code\":\"上传的是空文件\"}";
   }
   if (filedata.Length > 1048576)
   {
    msg = "{\"code\":\"图片大小不能超过1M\"}";
   }
   string fileextension = filedata[0].ToString() + filedata[1].ToString();
   if (fileextension == "7173")
   {
    fileextension = "gif";
   }
   else if (fileextension == "255216")
   {
    fileextension = "jpg";
   }
   else if (fileextension == "13780")
   {
    fileextension = "png";
   }
   else if (fileextension == "6677")
   {
    fileextension = "bmp";
   }
   else if (fileextension == "7373")
   {
    fileextension = "tif";
   }
   else
   {
    msg = "{\"code\":\"上传的文件不是图片\"}";
   }
   try
   {
    //保存图片
    string filename = Guid.NewGuid().ToString("D") + "." + fileextension;
    System.IO.MemoryStream ms = new System.IO.MemoryStream(filedata);
    System.IO.FileStream fs = new System.IO.FileStream(context.Server.MapPath("~/") + "/采集图片/" + filename, System.IO.FileMode.Create);
    ms.WriteTo(fs);
    ms.Close();
    fs.Close();
    fs = null;
    ms = null;
    msg = "{\"code\":\"上传图片成功\"}";
   }
   catch (Exception exe)
   {
    msg = "{\"code\":\"" + exe.Message + "\"}";
   }

以上所述是小编给大家介绍的ASP.NET中利用WebClient上传图片到远程服务的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • silverlight用webclient大文件上传的实例代码

    客户端: 复制代码 代码如下: /// <summary>      /// 写入数据到流中      /// </summary>      /// <param name="url"></param>      /// <param name="callback"></param>      public async static Task<bool> Write(string

  • Silverlight中同步调用WebClient的解决办法,是同步!

    代码如下: 复制代码 代码如下: private void button2_Click(object sender, RoutedEventArgs e) { Service1Client sc = new Service1Client(); sc.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(sc_DoWorkCompleted); sc.DoWorkAsync(textBox1.Text); } void sc_

  • C# WebClient类用法实例

    进来的项目中要实现能够在windows service中调用指定项目的链接页面.由于访问页面时候使用的是ie浏览器或其他浏览器,所以想起用webclient类. 如果只想从特定的URI请求文件,则使用WebClient,它是最简单的.NET类,它只用一两条命令执行基本操作,.NET FRAMEWORK目前支持以http:.https和file:标识符开头的uri. WebClient下载文件 使用webclient下载文件有两种方法,具体使用哪一种方法取决于文件内容的处理方式,如果只想把文件保存

  • C#中在WebClient中使用post发送数据实现方法

    很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法.本文就较为详细的说明了WebClient中使用post发送数据实现方法. 下面先说说WebClient 最主要的功能. WebClient 构造函数 .Ctor 包括 一个空构造函数 和一个静态构造函数, 静态构造函数主要为UrlEncode 和UrlEncodeAndWirte 编码提供参照by

  • 用WebClient.UploadData方法上载文件数据的方法

    假如某网站有个表单,例如(url: http://localhost/login.aspx):  帐号  密码 我们需要在程序中提交数据到这个表单,对于这种表单,我们可以使用 WebClient.UploadData 方法来实现,将所要上传的数据拼成字符即可,程序很简单: string uriString = "http://localhost/login.aspx";  // 创建一个新的 WebClient 实例.  WebClient myWebClient = new WebC

  • ASP.NET中利用WebClient上传图片到远程服务的方法

    一.客户端 1.页面 <form id="Form1" method="post" runat="server" enctype="multipart/form-data"> <input id="MyFile" type="file" runat="server" /> <br /> <br /> <asp:Bu

  • ASP.Net中利用CSS实现多界面的两种方法

    本文实例讲述了ASP.Net中利用CSS实现多界面的两种方法.分享给大家供大家参考.具体实现方法如下: 可以通过使页面动态加载不同CSS来实现多界面的效果: 方法一: 复制代码 代码如下: <%@page language="C#"%> <%@import namespace="System.Data"%> <script language="c#" runat="server"> publ

  • asp.net中EXCEL数据导入到数据库的方法

    本文实例讲述了asp.net中EXCEL数据导入到数据库的方法.分享给大家供大家参考.具体分析如下: excel是办公中非常常用的一个办公表格了,但我们在开发中通常会需要直接把excel数据快速导入到数据库中了,这里整理了一个asp.net中EXCEL数据导入到数据库的例子供各位参考学习. 注意:EXCEL中的第一行不能导入. 下面是源码:IntoExcel.aspx: 复制代码 代码如下: <%@ Page  AutoEventWireup="true" CodeFile=&q

  • asp.net中Timer无刷新定时器的实现方法

    本文实例讲述了asp.net中Timer无刷新定时器的实现方法.Timer控件要实现无刷新,得用到ajax技术,这里使用VS2008自带的ajax技术.    首先得添加一个ScriptManager控件,然后再添加一个UpdatePanel用于存放Timer控件内容的,就可以实现无刷新了.下面是详细的内容: 一.前台代码如下: <form id="form1" runat="server"> <asp:ScriptManager ID="

  • 灵活掌握asp.net中gridview控件的多种使用方法(下)

    继续上篇文章的学习<灵活掌握asp.net中gridview控件的多种使用方法(上)>,在此基础上巩固gridview控件的操作使用,更上一层楼. 11.GridView实现用"..."代替超长字符串: 效果图: 解决方法:数据绑定后过滤每一行即可 for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { DataRowView mydrv; string gIntro; if (GridView1.PageIndex

  • 灵活掌握asp.net中gridview控件的多种使用方法(上)

    灵活使用asp.net中gridview控件的方法有很多种,本文内容很富,希望大家都能有所收获. 1.GridView无代码分页排序: 效果图: 小提示: 1.AllowSorting设为True,aspx代码中是AllowSorting="True": 2.默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12". 3.默认的是单向排序的,右击GridView弹出"属性",选择AllowSort

  • asp.net中利用ashx实现图片防盗链代码

    GET /Img.ashx?img=svn_work.gif HTTP/1.1 Accept: */* Referer: http://www.svnhost.cn/ Accept-Language: zh-cn UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727

  • asp.net中利用ashx实现图片防盗链的原理分析

    直接分析盗链原理:看下面用httpwatch截获的http发送的数据 GET /Img.ashx?img=svn_work.gif HTTP/1.1 Accept: */* Referer: http://www.jb51.net/ Accept-Language: zh-cn UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET

  • asp.net MVC利用自定义ModelBinder过滤关键字的方法(附demo源码下载)

    本文实例讲述了MVC利用自定义ModelBinder过滤关键字的方法.分享给大家供大家参考,具体如下: 前面一篇主要讲解了如何利用ActionFilter过滤关键字,这篇主要讲解如何利用自己打造的ModelBinder来过滤关键字. 首先,我们还是利用上一篇<asp.net MVC利用ActionFilterAttribute过滤关键字的方法>中的实体类,但是我们需要加上DataType特性,以便于我们构造的ModelBinder通过DataTypeName识别出来: using System

  • asp.net中C#实现手动回收内存的方法

    C#有自动回收内存的机制,但是有时自动回收有一定滞后,需要在变量使用后迅速回收,节约内存,这里介绍一个最简单的方法. 1.先对对象赋值 null; 2.使用System.GC.Collect() 复制代码 代码如下: class Program {          static void Main(string[] args)          {              long lenth = 1024 * 1024 * 128;                GetCost("程序启动

随机推荐