当前位置:编程学习 > C#/ASP.NET >>

怎样获取当前上传文件上传了多少

我想获取当前上传文件的上传了多少?以及上传进度,就想读取出来这一个参数,使用什么样的方法呢? --------------------编程问答-------------------- 你是想用C/S做上传还是用B/S --------------------编程问答-------------------- b/s的啊,问题类别是asp.net的 --------------------编程问答--------------------
就是要显示个进度条? --------------------编程问答--------------------
引用 1 楼 zmm12 的回复:
你是想用C/S做上传还是用B/S

还得看具体应用到了那种控件组件如何写的这些细节才好考虑这些问题.
--------------------编程问答-------------------- 不是进度条,就是文件上传了多少的一个参数就OK了,明白否?用asp.net实现,再次声明是B/S架构模式下的……⊙﹏⊙b汗 --------------------编程问答-------------------- 你是用fileupload服务器控件的吗?如果是,就不太方便了,因为他整个页面刷新。你可以用jquery uploadify,这是ajax方式上传的,还可显示进度条,只需配置一下路径即可。
http://www.jz123.cn/text/2419333.html --------------------编程问答-------------------- 断点续传
断点续传

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace CompleteClient
{
    /// <summary>
    /// 文件发送工作类
    /// </summary>
    class PostFile
    {
        /// <summary>
        /// 通过post发送指定文件的指定字段到指定的uri上
        /// </summary>
        /// <param name="uploadfile">上传文件路径</param>
        /// <param name="url">上传的到的URi位置</param>
        /// <param name="offset">当前偏移量</param>
        /// <param name="size">需要发送的块大小</param>
        /// <param name="fileFormName">服务器端"GET"取得的文件名</param>
        /// <param name="contenttype">文件类型(保留用)</param>
        /// <param name="querystring">GET数组(供服务器用GET取得一些信息)</param>
        /// <param name="cookies">本地cookies(保留用)</param>
        /// <returns>uri的response的内容以string的形式返回</returns>
        public string UploadFileEx(string uploadfile, string url, long offset, long size,
                                   string fileFormName, string contenttype,
                                   NameValueCollection querystring, CookieContainer cookies)
        {
            if ((fileFormName == null) ||
            (fileFormName.Length == 0))
            {
                fileFormName = "file";
            }

            if ((contenttype == null) ||
            (contenttype.Length == 0))
            {
                contenttype = "application/octet-stream";
            }

            string postdata;
            postdata = "?";
            if (querystring != null)
            {
                foreach (string key in querystring.Keys)
                {
                    postdata += key + "=" + querystring.Get(key) + "&";
                }
            }
            Uri uri = new Uri(url + postdata);

            string boundary = "----------" + DateTime.Now.Ticks.ToString("x");
            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri);
            webrequest.CookieContainer = cookies;
            webrequest.ContentType = "multipart/form-data; boundary=" + boundary;
            webrequest.Method = "POST";

            // 构造一个post请求的http头
            StringBuilder sb = new StringBuilder();
            sb.Append("--");
            sb.Append(boundary);
            sb.Append("\r\n");
            sb.Append("Content-Disposition: form-data; name=\"");
            sb.Append(fileFormName);
            sb.Append("\"; filename=\"");
            sb.Append(Path.GetFileName(uploadfile));
            sb.Append("\"");
            sb.Append("\r\n");
            sb.Append("Content-Type: ");
            sb.Append(contenttype);
            sb.Append("\r\n");
            sb.Append("\r\n");

            string postHeader = sb.ToString();
            byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);

            // Build the trailing boundary string as a byte array
            // ensuring the boundary appears on a line by itself
            byte[] boundaryBytes =
            Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");

            FileStream fileStream = new FileStream(uploadfile,
                            FileMode.Open, FileAccess.Read);
            long length = postHeaderBytes.Length + (long)size +
                                       boundaryBytes.Length;
            webrequest.ContentLength = length;

            Stream requestStream = webrequest.GetRequestStream();
            // 写入post头
            requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);

            // 写入文件内容
            byte[] buffer = new Byte[size];
            fileStream.Seek(offset, SeekOrigin.Current);
            fileStream.Read(buffer, 0, buffer.Length);

            requestStream.Write(buffer, 0, buffer.Length);

            // 写入post请求的尾
            requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
            //读取服务器的反馈消息
            WebResponse responce = webrequest.GetResponse();
            Stream s = responce.GetResponseStream();
            StreamReader sr = new StreamReader(s);

            return sr.ReadToEnd();
        }
    }
}
--------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 留名。
可以用flash解决 效果好看带进度条可以可有计数器功能 --------------------编程问答--------------------   收藏了  --------------------编程问答--------------------
引用 6 楼 flx_2028 的回复:
你是用fileupload服务器控件的吗?如果是,就不太方便了,因为他整个页面刷新。你可以用jquery uploadify,这是ajax方式上传的,还可显示进度条,只需配置一下路径即可。
http://www.jz123.cn/text/2419333.html

当中的这个链接打不开啊,~~~~(>_<)~~~~ 
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,