• c#HTTP协议文件上传


    直接上代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Windows.Forms;
    
    namespace UploadImageFile
    {
        public partial class Form1 : Form
        {
            #region 全局变量
            HttpHelper Http = new HttpHelper();
            HttpItem item = null;
            HttpResult result = null;
            #endregion
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void but_Upload_Click(object sender, EventArgs e)
            {
                #region 变量
                byte[] UploadBuffers = null;
                string BoundStr = "-----------------------------7de1b519306dc";//根据抓包生成
                StringBuilder UploadBuf = new StringBuilder();
                #endregion
    
                #region 头部数据
                UploadBuf.Append(BoundStr + "
    ");
                UploadBuf.Append(@"Content-Disposition: form-data; name=""file""; filename=""test.jpg""" + "
    ");
                UploadBuf.Append("Content-Type: image/jpeg
    
    ");
                byte[] HeadBytes = Encoding.ASCII.GetBytes(UploadBuf.ToString());
                #endregion
    
                #region 图片数据
                byte[] PicBytes = ImageToBytesFromFilePath(@"D:	est.jpg");
                #endregion
    
                #region 尾部数据
                UploadBuf.Clear();
                UploadBuf.Append("
    " + BoundStr + "
    ");
                UploadBuf.Append(@"Content-Disposition: form-data; name=""id""" + "
    
    
    ");
                UploadBuf.Append(BoundStr + "
    " + @"Content-Disposition: form-data; name=""proxyurl""" + "
    
    
    ");
                UploadBuf.Append(BoundStr + "
    " + @"Content-Disposition: form-data; name=""jsmode""" + "
    
    true
    ");
                UploadBuf.Append(BoundStr + "
    " + @"Content-Disposition: form-data; name=""rule""" + "
    
    productImageRule
    ");
                UploadBuf.Append(BoundStr + "--");
                byte[] TailBytes = Encoding.ASCII.GetBytes(UploadBuf.ToString());
                #endregion
    
                #region 数组拼接
                UploadBuffers = ComposeArrays(HeadBytes, PicBytes);
                UploadBuffers = ComposeArrays(UploadBuffers, TailBytes);
                #endregion
    
                #region 上传
                item = new HttpItem()
                {
                    URL = "http://upload.alibaba.com/fileupload",
                    Method = "POST",
                    ContentType = "multipart/form-data; boundary=" + BoundStr.Substring(2),
                    Referer = "http://upload.alibaba.com/fileupload.html",
                    PostDataType = PostDataType.Byte,
                    PostEncoding = Encoding.UTF8,
                    PostdataByte = UploadBuffers
                };
                result = Http.GetHtml(item);
                MessageBox.Show(result.Html);
                #endregion
            }
    
            #region 数组组合
            public static byte[] ComposeArrays(byte[] Array1, byte[] Array2)
            {
                byte[] Temp = new byte[Array1.Length + Array2.Length];
                Array1.CopyTo(Temp, 0);
                Array2.CopyTo(Temp, Array1.Length);
                return Temp;
            }
            #endregion
    
            #region 图片转Byte数组
            private byte[] ImageToBytesFromFilePath(string FilePath)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    using (Image Img = Image.FromFile(FilePath))
                    {
                        using (Bitmap Bmp = new Bitmap(Img))
                        {
                            Bmp.Save(ms, Img.RawFormat);
                        }
                    }
                    return ms.ToArray();
                }
            }
            #endregion
        }
    }
    

      

  • 相关阅读:
    如何写一个计算器?
    Web-Scale IT 我之见!
    Django 安全策略的 7 条总结!
    运维安全系列基础服务之 FTP 服务(系列一)
    程序复杂度之圈复杂度
    微信小程序的wx-charts插件-tab选项卡
    微信小程序的wx-charts插件-tab选项卡
    小程序请假效果
    HTTP状态码
    解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的
  • 原文地址:https://www.cnblogs.com/wangyinlon/p/11392259.html
Copyright © 2020-2023  润新知