精华内容
下载资源
问答
  • c#上传文件到服务器
    千次阅读
    2021-08-08 01:28:46

    public string UploadFile(string userID)

    {

    Byte[] MeaningFile;

    FileStream stream = new FileStream(tbFilePath.Value, FileMode.Open, FileAccess.Read);

    int size = Convert.ToInt32(stream.Length);

    MeaningFile = new Byte[size];

    stream.Read(MeaningFile, 0, size);

    stream.Close();

    FileStream fos = null;

    string fileName = "";

    string fileExt = tbFilePath.Value.Substring(tbFilePath.Value.LastIndexOf("."));

    if (fileExt == ".xls")//必须是EXCEL文件

    {

    try

    {

    string filePath = Server.MapPath("~/DataFile/");

    if (!Directory.Exists(filePath))

    {

    Directory.CreateDirectory(filePath);

    }

    fileName = userID + fileExt;

    fos = new FileStream(filePath + fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);

    fos.Write(MeaningFile, 0, MeaningFile.Length);

    fos.Close();

    }

    catch

    {

    }

    finally

    {

    if (fos != null)

    {

    try

    {

    fos.Close();

    }

    catch

    {

    }

    }

    }

    }

    else

    {

    }

    return fileName;

    }

    更多相关内容
  • C# 上传文件到服务器

    千次阅读 2018-03-07 11:54:44
    QQ技术交流群号:601122412 看代码 多的就不解释了 2个图都差不多;

     QQ技术交流群号:601122412

    看代码 多的就不解释了   2个图都差不多;

    展开全文
  • 服务端接口接受一个客户端上传文件流后进行后续的业务操作。 客户端: Modle类: public class UploadParameterType { public UploadParameterType() { FileNameKey = "file"; Encoding = Encoding.U

    场景描述:
    特别声明
    以下代码也是我从网络上复制的别人的,但是一开始跑我这边有点报错就稍微调整了一下。同时也是记录一下
    服务端接口接受一个客户端上传的文件流后进行后续的业务操作。

    客户端:
    Modle类:

    public class UploadParameterType
        {
            public UploadParameterType()
            {
                FileNameKey = "file";
                Encoding = Encoding.UTF8;
                PostParameters = new Dictionary<string, string>();
            }
            /// <summary>
            /// 上传地址
            /// </summary>
            public string Url { get; set; }
            /// <summary>
            /// 文件名称key
            /// </summary>
            public string FileNameKey { get; set; }
            /// <summary>
            /// 文件名称value
            /// </summary>
            public string FileNameValue { get; set; }
            /// <summary>
            /// 编码格式
            /// </summary>
            public Encoding Encoding { get; set; }
            /// <summary>
            /// 上传文件的流
            /// </summary>
            public Stream UploadStream { get; set; }
            /// <summary>
            /// 上传文件 携带的参数集合
            /// </summary>
            public IDictionary<string, string> PostParameters { get; set; }
        }
    

    HTTP请求方法

     public static string Execute(UploadParameterType parameter)
            {
                // 1.分界线
                string boundary = string.Format("----{0}", DateTime.Now.Ticks.ToString("x")),       // 分界线可以自定义参数
                    beginBoundary = string.Format("--{0}\r\n", boundary),
                    endBoundary = string.Format("\r\n--{0}--\r\n", boundary);
                byte[] beginBoundaryBytes = parameter.Encoding.GetBytes(beginBoundary),
                    endBoundaryBytes = parameter.Encoding.GetBytes(endBoundary);
                byte[] postBytes = new byte[] { };
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    // 2.组装开始分界线数据体 到内存流中
                    memoryStream.Write(beginBoundaryBytes, 0, beginBoundaryBytes.Length);
                    // 3.组装 上传文件附加携带的参数 到内存流中
                    if (parameter.PostParameters != null && parameter.PostParameters.Count > 0)
                    {
                        foreach (KeyValuePair<string, string> keyValuePair in parameter.PostParameters)
                        {
                            string parameterHeaderTemplate = string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n{2}", keyValuePair.Key, keyValuePair.Value, beginBoundary);
                            byte[] parameterHeaderBytes = parameter.Encoding.GetBytes(parameterHeaderTemplate);
                            memoryStream.Write(parameterHeaderBytes, 0, parameterHeaderBytes.Length);
                        }
                    }
                    // 4.组装文件头数据体 到内存流中
                    string fileHeaderTemplate = string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n", parameter.FileNameKey, parameter.FileNameValue);
                    byte[] fileHeaderBytes = parameter.Encoding.GetBytes(fileHeaderTemplate);
                    memoryStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length);
    
                    // 5.组装结束分界线数据体 到内存流中
                    //memoryStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
                    // 6.获取二进制数据
                    postBytes = memoryStream.ToArray();
                }
                // 7.HttpWebRequest 组装
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(parameter.Url, UriKind.RelativeOrAbsolute));
                //对发送的数据不使用缓存【重要、关键】
                webRequest.AllowWriteStreamBuffering = false;
                webRequest.Method = "POST";
                webRequest.Timeout = 1800000;
                webRequest.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
                webRequest.ContentLength = postBytes.Length + parameter.UploadStream.Length + endBoundaryBytes.Length;
                webRequest.Headers.Add("X-Access-Token", "HSY715896176423170048");
                if (Regex.IsMatch(parameter.Url, "^https://"))
                {
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
                    ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;
                }
                // 8.组装文件流
                byte[] buffer = new byte[1024 * 1024 * 1];
                int size = parameter.UploadStream.Read(buffer, 0, buffer.Length);
                Stream requestStream = webRequest.GetRequestStream();
                requestStream.Write(postBytes, 0, postBytes.Length);
                while (size > 0)
                {
                    requestStream.Write(buffer, 0, size);
                    size = parameter.UploadStream.Read(buffer, 0, buffer.Length);
                }
                requestStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
                requestStream.Close();
                // 9.获取响应
                using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
                {
                    using (StreamReader reader = new StreamReader(webResponse.GetResponseStream(), parameter.Encoding))
                    {
                        string body = reader.ReadToEnd();
                        reader.Close();
                        return body;
                    }
                }
            }
    

    上面的代码片段里面有针对请求https接口进行了证书处理顾增加一下代码:

     static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
            {
                return true;
            }
    

    客户端调用上传:

      public static void UploadFiles()
            {
                try
                {
                    using (FileStream fs = new FileStream(@"C:\Users\wh\Desktop\各类型发票\电子发票.jpg", FileMode.Open, FileAccess.Read))
                    {
                        Dictionary<string, string> postParameter = new Dictionary<string, string>();
                        postParameter.Add("name", "heshang");
                        postParameter.Add("param", "1 2 3");
                        string result = Execute(new UploadParameterType
                        {
                            Url = "上传文件的服务端地址",
                            UploadStream = fs,
                            FileNameValue = "电子发票.jpg",
                            PostParameters = postParameter
                        });
                    }
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    

    最后上图postman:
    在这里插入图片描述

    最后还有个老哥的链接参考:
    c#上传文件参考链接

    最后加油!西红柿。

    展开全文
  • C# 实现文件上传到服务器

    千次阅读 2021-08-02 09:59:06
    【实例简介】可以实现文件上传到服务器的功能【实例截图】【核心代码】public int UpSound_Request(string address, string fileNamePath, string saveName, ProgressBar progressBar){int returnValue = 0;//要上传...

    【实例简介】

    可以实现文件上传到服务器的功能

    【实例截图】

    874776fde8483ffa5e6307f3d41b756e.png

    【核心代码】

    public int UpSound_Request(string address, string fileNamePath, string saveName, ProgressBar progressBar)

    {

    int returnValue = 0;

    //要上传的文件

    FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);

    //二进制对象

    BinaryReader r = new BinaryReader(fs);

    //时间戳

    string strBoundary = "----------" DateTime.Now.Ticks.ToString("x");

    byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" strBoundary "\r\n");

    //请求的头部信息

    StringBuilder sb = new StringBuilder();

    sb.Append("--");

    sb.Append(strBoundary);

    sb.Append("\r\n");

    sb.Append("Content-Disposition: form-data; name=\"");

    sb.Append("file");

    sb.Append("\"; filename=\"");

    sb.Append(saveName);

    sb.Append("\";");

    sb.Append("\r\n");

    sb.Append("Content-Type: ");

    sb.Append("application/octet-stream");

    sb.Append("\r\n");

    sb.Append("\r\n");

    string strPostHeader = sb.ToString();

    byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);

    // 根据uri创建HttpWebRequest对象

    HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(new Uri(address));

    httpReq.Method = "POST";

    //对发送的数据不使用缓存

    httpReq.AllowWriteStreamBuffering = false;

    //设置获得响应的超时时间(300秒)

    httpReq.Timeout = 300000;

    httpReq.ContentType = "multipart/form-data; boundary=" strBoundary;

    long length = fs.Length postHeaderBytes.Length boundaryBytes.Length;

    long fileLength = fs.Length;

    httpReq.ContentLength = length;

    try

    {

    progressBar.Maximum = int.MaxValue;

    progressBar.Minimum = 0;

    progressBar.Value = 0;

    //每次上传4k

    int bufferLength = 4096;

    byte[] buffer = new byte[bufferLength]; //已上传的字节数

    long offset = 0;         //开始上传时间

    DateTime startTime = DateTime.Now;

    int size = r.Read(buffer, 0, bufferLength);

    Stream postStream = httpReq.GetRequestStream();         //发送请求头部消息

    postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);

    while (size > 0)

    {

    postStream.Write(buffer, 0, size);

    offset = size;

    progressBar.Value = (int)(offset * (int.MaxValue / length));

    TimeSpan span = DateTime.Now - startTime;

    double second = span.TotalSeconds;

    labTime.Text = "已用时:" second.ToString("F2") "秒";

    if (second > 0.001)

    {

    labSpeed.Text = "平均速度:" (offset / 1024 / second).ToString("0.00") "KB/秒";

    }

    else

    {

    labSpeed.Text = " 正在连接…";

    }

    labState.Text = "已上传:" (offset * 100.0 / length).ToString("F2") "%";

    labSize.Text = (offset / 1048576.0).ToString("F2") "M/" (fileLength / 1048576.0).ToString("F2") "M";

    Application.DoEvents();

    size = r.Read(buffer, 0, bufferLength);

    }

    //添加尾部的时间戳

    postStream.Write(boundaryBytes, 0, boundaryBytes.Length);

    postStream.Close();

    //获取服务器端的响应

    WebResponse webRespon = httpReq.GetResponse();

    Stream s = webRespon.GetResponseStream();

    //读取服务器端返回的消息

    StreamReader sr = new StreamReader(s);

    String sReturnString = sr.ReadLine();

    s.Close();

    sr.Close();

    if (sReturnString == "Success")

    {

    returnValue = 1;

    }

    else if (sReturnString == "Error")

    {

    returnValue = 0;

    }

    }

    catch

    {

    returnValue = 0;

    }

    finally

    {

    fs.Close();

    r.Close();

    }

    return returnValue;

    }

    展开全文
  • c#上传文件到服务器

    千次阅读 2016-05-29 21:51:35
    A.winform界面代码 首先添加引用 using System.IO;... /// 将本地文件上传到指定的服务器(HttpWebRequest方法)   ///  /// 文件上传到服务器   /// 要上传的本地文件(全路径)   
  • C#上传文件到服务器

    千次阅读 2016-08-11 14:20:47
    c#上传文件到服务器本文主要介绍如何以文件流的方式上传本地文件服务端:环境介绍 所用语言:客户端C#,服务端Java+Spring框架 客户端代码说明: 通过网页端调试可以发现,上传文件流时候,请求信息里面有 ...
  • C# 上传文件到服务器(WPF)

    千次阅读 2020-04-26 14:56:47
    首先是加入几个控件,只需要一个路径文件选择器、进度条、一个导入按钮就行了,其他的控件可以不需要。 点击导入按钮开始 private void button1_Click(object sender, EventArgs e) { OpenFileDialog ...
  • C# WinForm 上传图片 文件到服务器的方法Uploader ashx.txt 参考代码
  • 主要介绍了c#批量上传图片到服务器示例,服务器端需要设置图片存储的虚拟目录,需要的朋友可以参考下
  • 摘要:C#源码,网络相关,上传文件,文件下载 C#上传文件、下载文件实例源码下载。浏览需要上传的文件,即可实现上传,输入指定文件的地址可实现下载。下载源码测试一下您就知道功能了。
  • 我有一个上传文件FTP服务器的问题。我有几个按钮。每个按钮都会将不同的文件上传ftp。第一次单击按钮时,文件...这里是代码:c#上传文件到FTP服务器protected void btn_export_OnClick(object sender, Event...
  • C#winform怎么上传文件到服务器啊?privatevoidUpLoadFile(stringfileNamePath,stringuriString){//stringfileName=fileNamePath.Substring(fileNamePath.LastIndexOf("\\")+1);stringNewFileName=DateTime.Now.ToS....
  • c#文件上传上传到服务器

    万次阅读 热门讨论 2018-08-30 21:48:06
    /// 上传的本地文件路径 /// 要保存的文件名称 /// 滚动态 /// <returns></returns> private int Upload_Request2(string address, string fileNamePath, string saveName, ProgressBar progressBar) { int ...
  • 近期在做上传文件到服务器的需求,所以拿出来给大家共享。没有进度条的public class VrPostFile{/// /// 将本地文件上传指定的服务器(HttpWebRequest方法)/// /// 文件上传服务器/// 要上传的本地文件(全路径)...
  • 基于C#MVC-WEBAPI实现的文件批量上传服务器源代码,客户端通过form表单或ajax提交参数及文件,本程序负责接收并处理请求:将文件根据时间戳重命名后存入指定目录,并将参数与文件一一对应后存入mysql数据库,代码简洁,4-...
  • 能够上传照片网络共享的指定文件夹,并且能够按照要求修改照片的名字
  • c# webserver上传文件到服务器的问题 遇到100多M的文件直接报 操作超时 我在web.config文件里面也已经配置了 ``` ``` 但是没有用 下面是代码 webserver ``` //上传文件服务器 [WebMethod] public bool ...
  • 对于用户上传的文件如果只是根据扩展名判断,很容易上传上来可执行文件,这是非常危险的,这段代码可以在服务器端检测上传文件的真实类型。 <%@ Page Language=C# %> <!DOCTYPE ...
  • 类似于以下场景,将表单中的用户信息(包含附件)上传到服务器并保存数据库中, <form id="form1" runat="server" action="UserManageHandler.ashx" method="post" enctype="multipart/form-data"> 名称:...
  • C# WinForm 上传图片 文件到服务器的方法Uploader ashx.txt
  • 最近几天在玩桌面程序,在这里跟大家共享下如何将本地文件上传到远程服务器上面。注意,我在这里使用的是WebClient而不是ftp首先,我们先来定义一个类UpLoadFile,这个类就是文件上传类。代码如下:public void ...
  • c# 实现文件FTP上传至服务器  WebClient上传文件服务器(不带进度条)    要上传的文件(全路径格式)  <param name="strUrlDirPath">Web服务器文件夹路径  <returns>True/False是否上传成功</returns>
  • 通过C#代码来实现将文件上传到ftp服务的功能
  • 主要介绍了C#实现的文件上传下载工具类,结合完整实例形式分析了C#操作文件上传与下载功能,并且还可针对上传文件自动命名以避免服务器中的文件名重复,需要的朋友可以参考下
  • 最近学习了 C#实现文件上传与下载,现在分享给大家。 1、C#文件上传 创建MyUpload.htm页面,用于测试 <form name=form1 method=post action=UploadFile.aspx id=form1 enctype=multipart/form-data> <...
  • url:后台上传文件路径地址 data:自定义参数 {'userID':'0001'} fileName:接收数据的参数名称,后台参数类型:System.Web.HttpPostedFileWrapper CallBack:返回路径 暂时fileName方法传的是:file */ function Uploa
  • android 上传文件C#服务器

    热门讨论 2015-08-09 08:51:41
    本工程,解压直接导入Eclipse调试,直接可以运行。不用改代码,不用改链接,可以直接上传上传成功后会返回数据,提示你成功了。希望对你有帮助。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,882
精华内容 10,752
关键字:

c#上传文件到服务器

c# 订阅