佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 797|回复: 6

[解决]ASP.NET 与 C# DOWNLOAD 问题

[复制链接]
发表于 25-8-2006 10:42 AM | 显示全部楼层 |阅读模式
早上好,小弟有问题想要请教各位。请各位帮帮忙,在此谢过 (好像罗嗦了)
在ASP.NET 与 C#里的DOWNLOAD,每当要DOWNLOAD FILE 时,除了DOWNLOAD DIALOG 会 POP UP出来,在DOWNLOAD DIALOG后面也会有个 BLANK WINDOW SCREEN,(如图)

当我在 DOWNLLOAD DIALOG 里按CANCEL 时,BLANK WINDOW SCREEN 是不会消失的。

请问我要怎样把BLANK WINDOW SCREEN 拿掉,或者不要让它POP UP 出来?谢谢。



这贴已经解决。谢谢各位

[ 本帖最后由 sawyih1 于 25-8-2006 01:30 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 25-8-2006 10:54 AM | 显示全部楼层
应该不会有后面的 blank window, 要看你的 code 是怎么写了...
回复

使用道具 举报

 楼主| 发表于 25-8-2006 11:15 AM | 显示全部楼层
我是用Javascript 在第一张form(Form1), 来开第二张form (Form2),然后Form2就会启动download file function。

Form1的Javascript如下:

function Link()
{
childWin =window.open('Form2.aspx','_blank','left=212,top=184,width=600,height=400,resizable=no');
return false;
}

请问要如何做才能call Form2而又不会有blank screen 呢?
回复

使用道具 举报

发表于 25-8-2006 11:24 AM | 显示全部楼层
不知道你在 Form2.aspx 里的 code 是怎么样... 也许可以用 javascript 把它关掉.
回复

使用道具 举报

 楼主| 发表于 25-8-2006 11:46 AM | 显示全部楼层
Form2 的 coding 如下;
private void Page_Load(object sender, System.EventArgs e)
{
                       
        string sURL = @"C:\Inetpub\wwwroot\tany.doc";
        DownloadFile(sURL);
                                               
}

               
public static double getFileSize(string filePath)
{
        double fileSize = 0;
        if(File.Exists (filePath))
        {
                FileInfo fileInfos;                               

                fileInfos = new FileInfo(filePath);
                fileSize = fileInfos.Length;                                                       
        }
        return fileSize;
}

public static void DownloadFile(string filePath)               
{
                                               
if (File.Exists(filePath))
{
        FileInfo fileInfos;
        long startPosition = 0;
        long fileSize, endPosition;                                                fileInfos = new FileInfo(filePath);
        fileSize = fileInfos.Length;
        endPosition = fileSize;                               

                       
        string range = HttpContext.Current.Request.Headers["Range"];
        if (!(range == null || range == ""))
        {
        string[] startEnd = range.Substring(range.LastIndexOf("=") + 1).Split('-');
        if (!(startEnd[0] == ""))
        startPosition = long.Parse(startEnd[0]);

        if ((startEnd.GetUpperBound(0) >= 1) && (!(startEnd[1] == "")))       
        endPosition = long.Parse(startEnd[1]);
        else
        endPosition = fileSize - startPosition;

        if (endPosition > fileSize)
        endPosition = fileSize - startPosition;


                                       
        HttpContext.Current.Response.StatusCode = 206;
        HttpContext.Current.Response.StatusDescription = "Partial Content";
        HttpContext.Current.Response.AppendHeader("Content-Range", "bytes " + startPosition +"-"+ endPosition + "/" + fileSize);
        }

        HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + fileInfos.Name);
                               
        HttpContext.Current.Response.WriteFile(filePath, startPosition, endPosition);
                                       
        HttpContext.Current.Response.End();
                                       
                       
}
else
        hrow new Exception("Document not found. Please contact administrator.");
                       
                       
               
}

                public bool FileExisted(string path)
                {
                        return File.Exists(path);
                }

[[i] 本帖最后由 sawyih1 于 25-8-2006 11:56 AM 编辑 [/i]]
回复

使用道具 举报

 楼主| 发表于 25-8-2006 11:51 AM | 显示全部楼层
我有试过用javascript setTimeout来关掉它,
setTimeout('childWin.close()',10000)
不过又有问题出现。

当开得file 是 HTML时,它就会show在blank screen里面,
可是javascript 的 seTimeout还是在跑着,当timeout 了,就hit javascript error 了。

真的头大!
回复

使用道具 举报

Follow Us
 楼主| 发表于 25-8-2006 01:18 PM | 显示全部楼层
问题已经解决了,
谢谢羊兄,

应该不会有后面的 blank window, 要看你的 code 是怎么写了...

一语惊醒梦中人。
我就知道那里出错了。
其实在Form1的javascript应该这样写就可以了:

function Link()
{
childWin =window.open('Form2.aspx','_self','left=212,top=184,width=600,height=400,resizable=no');
return false;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-8-2025 06:00 PM , Processed in 0.458385 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表