http协议上传文件

9 篇文章 0 订阅
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using System.IO;
using System.Text;

namespace UpLoadFile_Web.Controllers
{ 
    public class HomeController : Controller
    { 
        [HttpPost]
        public void uploadfile()
        {
            try
            {
                if (Request.Files.Count > 0)
                {
                    string[] dateTime = DateTime.Now.ToString("yyyy-MM-dd").Split('-');
                    string folder = $"{System.Configuration.ConfigurationManager.AppSettings["fileurl"].ToString()}\\{dateTime[0]}\\{dateTime[1]}\\{dateTime[2]}";
                    if (!Directory.Exists(folder))
                    {
                        Directory.CreateDirectory(folder);
                    }
                    Request.Files[0].SaveAs(folder+"\\"+Request.Files[0].FileName);
                    Response.Write("上传成功");
                }
                else
                {
                    Response.Write("检测不到文件");
                }
            }
            catch (Exception ex)
            {

                Response.Write($"上传失败,{ex.Message}");
            }
            
        }
        public void Index()
        {
            Response.Write("文件上传网站");
        }
        public void uploadtest(string file,string url)
        {
            file = @"E:\demo.zip";
            url = "http://172.0.0.1:8094/home/uploadfile";
            using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
            { 
                string boundary = $"{DateTime.Now.Ticks.ToString("x")}";
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
                webRequest.Method = "POST"; 
                webRequest.ContentType = $"multipart/form-data; boundary=----{boundary}";

                long length = 0;

                string content = $"------{boundary}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"{Path.GetFileName(file)}\"\r\nContent-Type: application/octet-stream\r\n\r\n";

                byte[] bytes1 = Encoding.ASCII.GetBytes(content);
                length = bytes1.Length;

                byte[] bytes2 = new byte[fs.Length];
                fs.Read(bytes2, 0, (int)fs.Length);
                length += fs.Length;

                content = $"\r\n------{boundary}--";

                byte[] bytes3 = Encoding.ASCII.GetBytes(content);
                length += bytes3.Length;

                webRequest.ContentLength = length;

                Stream stream = webRequest.GetRequestStream();
                stream.Write(bytes1, 0, bytes1.Length);
                stream.Write(bytes2, 0, (int)fs.Length);
                stream.Write(bytes3, 0, bytes3.Length);

                stream = webRequest.GetResponse().GetResponseStream();

                StreamReader streamReader = new StreamReader(stream);
                Response.Write(streamReader.ReadToEnd());
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值