• asp.net 服务端调用客户端脚本; asp.net 服务端将文件传给客户端; reponse.ContentType的取值;用OutputStream.Write返回文件,效率是WriteFile的10倍;download link click和OutputStream的比较;


    服务端

     ScriptManager.RegisterStartupScript(this, this.GetType(), "JSFunction", "clickAWord();", true);

    客户端:

    <script type="text/jacascript">
      function clickAWord()
     {
          alert("Hello World");
    document.getElementById("tempA").click(); //触发A元素的click事件,跨浏览器 }
    </script>

    二、asp.net 服务端将文件传给客户端

      Response.Redirect(fileName);  //来自codeproject, whole EnglishSearch

    三、repsonse.ContentType的可能取值

    <?xml version="1.0" encoding="utf-8" ?>
    <!--
       Inernet Media Types
       http://en.wikipedia.org/wiki/Internet_media_type
    -->
    <mediaTypes>
       <mediaType>
          <contentType>application/vnd.ms-excel</contentType>
          <name>Microsoft Excel (tm)</name>
          <refUrl>http://www.iana.org/assignments/media-types/application/vnd.ms-excel</refUrl>
          <fileExtensions>
             <fileExtension>.xls</fileExtension>
          </fileExtensions>
       </mediaType>
       <mediaType>
          <contentType>application/msword</contentType>
          <name>Microsoft Word</name>
          <refUrl>http://www.iana.org/assignments/media-types/application/msword</refUrl>
          <fileExtensions>
             <fileExtension>.doc</fileExtension>
          </fileExtensions>
       </mediaType>
       <mediaType>
          <contentType>application/vnd.ms-powerpoint</contentType>
          <name>Microsoft Powerpoint (tm)</name>
          <refUrl>http://www.iana.org/assignments/media-types/application/vnd.ms-powerpoint</refUrl>
          <fileExtensions>
             <fileExtension>.ppt</fileExtension>
          </fileExtensions>
       </mediaType>
       <mediaType>
          <contentType>application/pdf</contentType>
          <name>Portable Document Format</name>
          <refUrl>http://www.iana.org/assignments/media-types/application/vnd.ms-powerpoint</refUrl>
          <fileExtensions>
             <fileExtension>.pdf</fileExtension>
          </fileExtensions>
       </mediaType>
       <mediaType>
          <contentType>image/jpeg</contentType>
          <name>JPEG JFIF image</name>
          <fileExtensions>
             <fileExtension>.jpg</fileExtension>
             <fileExtension>.jpeg</fileExtension>
          </fileExtensions>
       </mediaType>
       <mediaType>
          <contentType>image/gif</contentType>
          <name>GIF image</name>
          <fileExtensions>
             <fileExtension>.gif</fileExtension>
          </fileExtensions>
       </mediaType>
       <mediaType>
          <contentType>image/vnd.microsoft.icon</contentType>
          <name>ICO image</name>
          <refUrl>http://www.iana.org/assignments/media-types/image/vnd.microsoft.icon</refUrl>
          <fileExtensions>
             <fileExtension>.ico</fileExtension>
          </fileExtensions>
       </mediaType>
       <mediaType>
          <contentType>application/zip</contentType>
          <name>ZIP file</name>
          <refUrl>http://www.iana.org/assignments/media-types/application/zip</refUrl>
          <fileExtensions>
             <fileExtension>.zip</fileExtension>
          </fileExtensions>
       </mediaType>
    </mediaTypes>

     四、用OutputStream.Write返回文件,效率是WriteFile的10倍

     txtReport:文件的路径

     byte[] arByteFile=File.ReadAllBytes(txtReport);
                using (MemoryStream ms = new MemoryStream(arByteFile))
                {
                    long dataLengthToRead = ms.Length;
                    int blockSize = dataLengthToRead >= 5000 ? 5000 : (int)dataLengthToRead;
                    byte[] buffer = new byte[dataLengthToRead];
                    
                    context.Response.Clear();
                    
                    // Clear the content of the response
                    context.Response.ClearContent();
                    context.Response.ClearHeaders();
                    
                    // Buffer response so that page is sent
                    // after processing is complete.
                    context.Response.BufferOutput = true;
                    
                    // Add the file name and attachment,
                    // which will force the open/cance/save dialog to show, to the header
                    context.Response.AddHeader("Content-Disposition", "attachment; filename=导入报告.txt" );
    
    
                    // bypass the Open/Save/Cancel dialog
                    //Response.AddHeader("Content-Disposition", "inline; filename=" + doc.FileName);
    
    
                    // Add the file size into the response header
                    context.Response.AddHeader("Content-Length", arByteFile.Length.ToString());
    
                    // Set the ContentType
                    context.Response.ContentType = "application/octet-stream";
    
                    // Write the document into the response
                    while (dataLengthToRead > 0 && context.Response.IsClientConnected)
                    {
                        Int32 lengthRead = ms.Read(buffer, 0, blockSize);
                        context.Response.OutputStream.Write(buffer, 0, lengthRead);
                        context.Response.Flush();
                        dataLengthToRead = dataLengthToRead - lengthRead;
                    }
                    context.Response.Flush();
                    context.Response.Close();
                }
                context.Response.End();  

     //.net response header

    五、download link click和OutputStream的比较;

    方式1: 服务端Output.Stream.Write(byte[]) //以二进制流返回要下载的文件

    方式2:服务端返回文件的uri,客户端ajax接收后, <a id="tempA">; tempA.href=url; temA.click() ;实现下载;

           方式2的<a>叫download link。 href=*.xls,*.doc,*.zip 都会弹出下载对话框。

                                                     href=*.txt, 则会使当前页的内容变成txt的内容. 这就是downloadLink的局限性。

  • 相关阅读:
    spark foreachPartition
    spark mapPartition
    spark union intersection subtract
    spark join 类算子
    spark action 算子
    卷展栏模板
    锁定/解锁
    3D一些提示信息
    文件对话框多选
    吸取属性
  • 原文地址:https://www.cnblogs.com/imihiroblog/p/2737331.html
Copyright © 2020-2023  润新知