• c# post文字图片至服务器


    最近由于项目需要实现c#提交文字及数据至服务器,因此研究了一下c# php数据传送;

    下面用一个示例来演示,c# post文字+图片 ,php端接收;

    post提交数据核心代码(post数据提交)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Drawing;
    using System.Web;
    using System.Net;
     
    namespace postpic
    {
        class postClass
        {
            /// <summary>
            /// 向服务器post文字和图片
            /// </summary>
            ///<param name="url">url
            ///<param name="userName">用户名
            ///<param name="userPwd">密码
            ///<param name="jpegPath">头像地址
            /// <returns>返回服务器返回值</returns>
            public string post(string url,string userName, string userPwd, string jpegPath)
            {
                //将图片转化为byte[]再转化为string
                string array = Convert.ToBase64String(imageToByteArray(jpegPath));
                //构造post提交字段
                string para = name=+userName+&pwd=+userPwd+&head=+HttpUtility.UrlEncode(array);
           
                #region HttpWebRequest写法
     
                HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create(url);
                httpWeb.Timeout = 20000;
                httpWeb.Method = POST;
                httpWeb.ContentType = application/x-www-form-urlencoded;
                byte[] bytePara = Encoding.ASCII.GetBytes(para);
                using (Stream reqStream = httpWeb.GetRequestStream())
                {
                    //提交数据
                    reqStream.Write(bytePara, 0, para.Length);
                }
                //获取服务器返回值
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWeb.GetResponse();
                Stream stream = httpWebResponse.GetResponseStream();
                StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding(utf-8));
                //获得返回值
                string result = streamReader.ReadToEnd();
                stream.Close();
     
                #endregion
                //将服务器返回值返回
                return result;
            }
     
            /// <summary>
            /// 图片转为Byte字节数组
            /// </summary>
            ///<param name="FilePath">路径
            /// <returns>字节数组</returns>
            private byte[] imageToByteArray(string FilePath)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    using (Image imageIn = Image.FromFile(FilePath))
                    {
                        using (Bitmap bmp = new Bitmap(imageIn))
                        {
                            bmp.Save(ms, imageIn.RawFormat);
                        }
                    }
                    return ms.ToArray();
                }
            }
        }
         
    }

    一、c#客户端

    为了方便说明,我直接简化了,一个提交按钮就好了。

    data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20141206/20141206085359118.png

    二、需要提交的图片

    该图片存放在俺的E盘根目录下面~~~~~(贴吧随便抓的一张图片)

    path = @E:head.jpg;

    data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20141206/20141206085359119.jpg

    三、php服务端

    接收图片后存放至,path = @C:Loginlog;

    附录:

    c#端代码:

    c#界面简单代码~~~~~(该代码可略过~~~~~)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace postpic
    {
        public partial class postFrom : Form
        {
            public postFrom()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 提交按钮,提交post数据
            /// </summary>
            ///<param name="sender">
            ///<param name="e">
            private void btnpost_Click(object sender, EventArgs e)
            {
                //postClass为数据提交类
                postClass ps = new postClass();
                string url = @http://localhost/login.php;
                string name = DooZn;
                string pwd = a12345;
                string jpegPath = @E:head.jpg;
     
                //提交数据
                string value = ps.post(url,name,pwd,jpegPath);
     
                //value为服务器返回值
                if (value.Contains(1))
                {
                    MessageBox.Show(登陆成功.);
                }
                else if (value.Contains(0))
                {
                    MessageBox.Show(登陆失败.);
                }
                else
                {
                    MessageBox.Show(未知错误.);
                }
            }
        }
    }
  • 相关阅读:
    js的一些总结
    模型矩阵, 视图矩阵, 投影矩阵
    深入理解Three.js(WebGL)贴图(纹理映射)和UV映射
    Cesium学习笔记(四)Camera
    Node.js 命令行程序开发教程 ---------http://www.ruanyifeng.com/blog/2015/05/command-line-with-node.html
    node 模块 fs-extra
    Object.keys() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
    Object.create() __https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create
    JavaScript停止冒泡和阻止浏览器默认行为
    js创建对象的最佳方式
  • 原文地址:https://www.cnblogs.com/rr163/p/4164098.html
Copyright © 2020-2023  润新知