zoukankan      html  css  js  c++  java
  • swfupload上传多个大视频

    首先引用文件:

    js:

    <script type="text/javascript">
    var swfu;
    var type = GetQueryString("type");
    var id = GetQueryString("id");
    SWFUpload.onload = function () {
    var settings = {
    flash_url: "swfupload/swfupload.swf",
    upload_url: "Upload.ashx",
    post_params: {
    "ASPSESSID": "<%=Session.SessionID %>",
    "type": type,
    "id": id
    },
    file_size_limit: "0",
    file_types: "*.*",
    file_types_description: "视频文件",
    file_upload_limit: 100,
    file_queue_limit: 50,
    custom_settings: {
    progressTarget: "fsUploadProgress",
    cancelButtonId: "btnCancel"
    },
    debug: false,

    // Button Settings
    button_placeholder_id: "spanButtonPlaceholder",
    button_ 120,
    button_height: 30,
    button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
    button_cursor: SWFUpload.CURSOR.HAND,

    // The event handler functions are defined in handlers.js

    //swfupload_loaded_handler: swfUploadLoaded,
    file_queued_handler: fileQueued,
    file_queue_error_handler: fileQueueError,
    file_dialog_complete_handler: fileDialogComplete,
    upload_start_handler: uploadStart,
    upload_progress_handler: uploadProgress,
    upload_error_handler: uploadError,
    upload_success_handler: uploadSuccess,
    upload_complete_handler: uploadComplete,
    queue_complete_handler: queueComplete, // Queue plugin event

    // SWFObject settings
    minimum_flash_version: "9.0.28",
    swfupload_pre_load_handler: swfUploadPreLoad,
    // swfupload_load_failed_handler: swfUploadLoadFailed
    };

    swfu = new SWFUpload(settings);
    }
    //获取地址栏参数
    function GetQueryString(name) {

    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");

    var r = window.location.search.substr(1).match(reg);

    if (r != null) return unescape(r[2]); return null;

    }
    </script>

    aspx:

    <body>

    <div id="content">

    <form id="form1" action="index.aspx" method="post" enctype="multipart/form-data">
    <div id="divSWFUploadUI">
    <p>
    <span id="spanButtonPlaceholder"></span>
    <input id="btnUpload" type="button" value="选择文件" style=" 120px; height: 30px; font-size: 14pt; font-weight: bold;" />
    <b id="divStatus" style="color: red;">请选择要上传的文件</b>
    <input id="btnCancel" type="button" value="Cancel All Uploads" disabled="disabled" style="display: none; margin-left: 2px; height: 22px; font-size: 8pt;" />
    </p>
    <br style="clear: both;" />

    <div class="fieldset flash" id="fsUploadProgress">
    <span class="legend">上传队例</span>
    </div>

    </div>
    </form>
    </div>
    </body>

    ashx:

    public void ProcessRequest(HttpContext context)
    {
    var Response = context.Response;
    var Request = context.Request;
    var Session = context.Session;

    string type = context.Request["type"];
    string id = context.Request["id"];

    ArtificialDataTitleDomain art = new ArtificialDataTitleDomain();
    ArtificialDataTitleEntity Inspect = new ArtificialDataTitleEntity();

    TestingMachineTitleDomain tmt = new TestingMachineTitleDomain();
    TestingMachineTitleEntity Repair = new TestingMachineTitleEntity();

    string s_rpath = System.Web.HttpContext.Current.Server.MapPath("") + "\" + "doc";
    string Datedir = DateTime.Now.ToString("yy-MM-dd") + " - " + id;
    string updir = s_rpath + "\" + Datedir;
    Response.CacheControl = "no-cache";
    if (Request.Files.Count > 0)
    {
    try
    {
    for (var j = 0; j < Request.Files.Count; j++)
    {
    var uploadFile = Request.Files[j];
    if (uploadFile.ContentLength <= 0) continue;
    if (!Directory.Exists(updir))
    {
    Directory.CreateDirectory(updir);
    }
    var extname = Path.GetExtension(uploadFile.FileName);
    var fullname = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
    var filename = uploadFile.FileName;
    uploadFile.SaveAs(string.Format("{0}\{1}", updir, filename));
    }
    List<string> lst = getFileName(Datedir);
    string allFileName = "";
    if (lst.Count > 0)
    {
    for (int i = 0; i < lst.Count; i++)
    {
    allFileName += lst[i] + ",";
    }
    }
    if (type == "Inspect")
    {
    Inspect = art.FindByID(id);
    Inspect.docUrl = Datedir + "*" + allFileName;
    art.Update(Inspect);
    }
    else if (type == "Repair")
    {
    Repair = tmt.FindByID(id);
    Repair.docUrl = Datedir + "*" + allFileName;
    tmt.Update(Repair);
    }
    }
    catch (Exception ex)
    {
    Response.Write("Message" + ex.ToString());
    }
    }
    }

    //此方法是我自己后期会用到下载

    //而上面的方法获取的FileName只能一个个获取 所以在此循环去取路径下的文件名 比较笨 但实用

    public List<string> getFileName(string url)
    {
    string filePath = string.Format(System.Web.HttpContext.Current.Server.MapPath("doc/{0}"), url);//路径
    DirectoryInfo dir = new DirectoryInfo(filePath);
    FileInfo[] fileInfo = dir.GetFiles();
    List<string> fileNames = new List<string>();
    foreach (FileInfo item in fileInfo)
    {
    fileNames.Add(item.Name);
    }
    return fileNames;

    }

    特别说明:

    此方法适用于单个文件2G以下的多文件上传。下次更新超2G的多文件代码

    关于swfupload里上传后上传列队里的信息会自动消失  可以自己根据需要自己设置如下属性

    fileprogress.js 里的 

    this.setTimer(setTimeout(function () {
     oSelf.disappear();
    }, 10000));

    注释即不消失

    js:

    file_size_limit: "0"    --  不限制上传文件大小

    file_types: "*.*",      ---  不限制文件格式

    post_params: {
    "ASPSESSID": "<%=Session.SessionID %>",
    "type": type,
    "id": id
    },   ---  传值  在ashx中直接   string type = context.Request["type"];  获取

  • 相关阅读:
    C#操作REDIS例子
    A C# Framework for Interprocess Synchronization and Communication
    UTF8 GBK UTF8 GB2312 之间的区别和关系
    开源项目选型问题
    Mysql命令大全——入门经典
    RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH 详解(引用)
    zabbix邮件报警通过脚本来发送邮件
    centos启动提示unexpected inconsistency RUN fsck MANUALLY
    rm 或者ls 报Argument list too long
    初遇Citymaker (六)
  • 原文地址:https://www.cnblogs.com/niesiao/p/9342809.html
Copyright © 2011-2022 走看看