有没有在ASP.net页面向服务器传送1G大小文件的方法?若有,用什么方法实现? 就用一般的上传,把Web.Config里 上传文件的大小限制 和 上传时间限制 改大一些,不行吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不行啊,我把我的代码贴给您看看:(用HtmlInputFile控件)<%@ Import Namespace="System.IO" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.OleDb" %><%@ Page Language="C#" Debug="true" %><html><head><title>文件上传</title><script language="C#" runat="server">public class YourPageClass { static string myConnString =@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\small program\download\网站下载系统专业版(Asp)\0001\download.asa;"; public static OleDbConnection myConnection = new OleDbConnection(myConnString); }protected void Page_Load(object sender, EventArgs E ){ DataSet ds =new DataSet(); OleDbDataAdapter command=new OleDbDataAdapter("select * from class", YourPageClass.myConnection); command.Fill(ds,"class"); command.Dispose(); DropDownList1.DataSource=ds.Tables["class"]; DropDownList1.DataTextField="class"; DropDownList1.DataValueField="classid"; DropDownList1.DataBind();}public void UploadFile_Click(object sender, EventArgs E ){ OleDbConnection myConnection_disc = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\small program\download\网站下载系统专业版(Asp)\0001\download.asa;"); OleDbCommand command_ml=new OleDbCommand("select * from ml",YourPageClass.myConnection); OleDbCommand command_disc=new OleDbCommand("select disc from disc",myConnection_disc); YourPageClass.myConnection.Open(); myConnection_disc.Open(); OleDbDataReader reader_ml=command_ml.ExecuteReader(); OleDbDataReader reader_disc=command_disc.ExecuteReader(); reader_ml.Read(); reader_disc.Read(); if (myFile.PostedFile!=null) { while(reader_ml.GetInt32(0)!=int.Parse(DropDownList1.SelectedItem.Value) ) //DropDownList1.SelectedItem.Value) { reader_ml.Read(); } Labe_show.Text="dddd"; //RadioButtonList1.SelectedItem.Value ; string nam=myFile.PostedFile.FileName; int i=nam.LastIndexOf("\\"); string newnm=nam.Substring(i); string a=reader_disc["disc"].ToString(); string b=reader_ml["md"].ToString(); myFile.PostedFile.SaveAs(a+b+newnm); //fname.Text=myFile.PostedFile.FileName; //fenc.Text=myFile.PostedFile.ContentType; //fsize.Text=Convert.ToString(double.Parse(myFile.PostedFile.ContentLength.ToString())/1048576)+"M"; //fpath.Text=@"http://10.168.104.7\download\pro\" + reader_ml.GetString(1)+newnm; } //reader_disc.Close(); //reader_ml.Close(); //YourPageClass.myConnection.Close(); // myConnection_disc.Close(); } </script> </head> <body bgcolor="#000080"> <form id="uploaderform" method="post" action="upload.aspx" enctype="multipart/form-data" runat="server"> <table border="2" cellspacing="1" width="388" id="AutoNumber1" height="338" style="WIDTH: 388px; HEIGHT: 338px"> <tr> <td width="100%" height="330" align="left" valign="top"> <div align="center"> <center> <table border="0" width="377" id="AutoNumber2" height="328" style="WIDTH: 377px; HEIGHT: 328px"> <tr> <td width="82" height="32" align="middle" style="WIDTH: 82px"> <font color="#ffff00" size="2">请选择类别</font></td> <td width="69%" height="32"><FONT face="宋体"> <asp:DropDownList id="DropDownList1" runat="server" Width="265px"></asp:DropDownList></FONT> </td> </tr> <tr> <td width="82" height="30" align="middle" style="WIDTH: 82px; HEIGHT: 30px"> <font size="2" color="#ffff00">请选择文件</font></td> <td width="69%" height="30" style="HEIGHT: 30px"><FONT face="宋体"></FONT> <INPUT id="myFile" style="WIDTH: 259px; HEIGHT: 22px" type="file" size="24" name="File1" runat="server"> </td> </tr> <tr> <td width="100%" height="23" colspan="2" align="middle" style="HEIGHT: 23px"><FONT face="宋体"> <INPUT id="Button_upload" style="WIDTH: 132px; HEIGHT: 24px" type="button" value="上 传" name="Button1" OnServerClick="UploadFile_Click" runat="server"></FONT> </td> </tr> <tr> <td width="100%" height="33" colspan="2" align="middle"><FONT face="宋体"> <asp:Label id="Labe_show" runat="server" Width="179px" ForeColor="Yellow"></asp:Label></FONT> </td> </tr> <tr> <td width="100%" height="152" colspan="2"> <font size="2" color="#ffffff"> </font><font size="2" color="#ffff00">文件名称: <asp:Label id="fname" runat="server" Width="282px"></asp:Label></font><p> <font size="2" color="#ffff00"> 文件类型: <asp:Label id="fenc" runat="server" Width="285px"></asp:Label></p> <P></FONT></P> <p><font size="2" color="#ffff00"> 文件大小: <asp:Label id="fsize" runat="server" Width="283px"></asp:Label></p> <P></FONT></P> <p><font size="2" color="#ffff00"> 上传路径: <asp:Label id="fpath" runat="server" Width="287px"></asp:Label></font></p> </td> </tr> <tr> <td width="100%" height="33" colspan="2" align="middle"> <font size="2" color="#ffff00" a href="###" onclick="javascript:window.close(); return false;"> <strong>关闭窗口</strong></font></td> </tr> </table> </center> </div> </td> </tr> </table> </form> </body> </html>上传小文件(20M成功过)没问题,web.config中最大长度设成了1048576,但是上传更大的文件时,IE浏览器下部的状态条在非常缓慢地向前移动,但当移动到大约快结束的时候,页面刷新不过来,页面不能显示,文件也没传成功,提示:请尝试以下操作:打开 10.168.104.66 主页,然后查找指向您感兴趣信息的链接。 单击刷新按钮,或以后再试。您要访问的网页有问题,无法显示。单击搜索,寻找 Internet 上的信息。 也可查看相关站点列表。 HTTP 500 - 内部服务器错误 Internet Explorer 请问是什么原因?急死我了 web.config里你是不是改的这个节点<httpRuntime executionTimeout="90" maxRequestLength="1048576" useFullyQualifiedRedirectUrl="false"/> executionTimeout时间设长一点。executionTimeout="900" 在IIS里看一下,好象IIS也有ExecuteTime是限制的。不过你用HTTP上传这么大文件是很不合适的,而且速度是很慢的。建议用FTP吧 use abcupload.net or netartisian fileupboth are 3rd-party .net control and support GB level web upload. 用ftp好啦。用什么asp页面啊。 可是大家都没告诉我出现这种问题的原因是什么啊?如果用ftp可不可以编程实现? 这是服务器的内存不够的原因吧,文件在没有传完时都是在内存中,通常没有1G以上的内存的服务器,传大文件应该是受不了的。(个人观点)可以用ftp控件,用vb做成ocx,dll都可以,vb里的wininet控件很方便,如果要功能强一点可以用 winsock控件,不过难度比较大。发布后打包下载到客户端 ftp上传的好处就是边传边保存,不会占用服务器内存 通过WEB界面上传大文件,简直是疯了! 会超时的。还是用ftp的好。有的可以支持断点序传 WEBCONFIG 中有设置上传文件大小的设定。<httpRuntime maxRequestLength="10240" />你把10240改成“2024000”再TRY 一下 ,如果还不行,你还是用FTP吧。 如果有money的话,买个2,3G的内存,应该ok了!:) 大大介绍我几个好用且免费的ftp控件吧? 把machine.config中上传文件的大小改大 靠,在WEB界面上传大文件,而且是如此大的文件,简直是疯了!我晕.... 采用FTP,如果你用HTTP的话以后肯定后悔 诸位说的用FTP是指用FTP工具还是指在页面使用FTP控件?能不能告诉我详细的方法?小弟不甚感激! 可以用页面来上传4G。用www.softstainse.com的组件就可以。不过是要money.不过在很长的时间都可以使用! 用ftp组件可以的,免费一个aspinet.dll 一定要用FTP HTTP上传效率太低而且还不支持端点续传,编译一个FTP Class然后在页面里调用 各位都只说了方法,但具体的应用例子呢?能否稍加讲一下,就算只讲用FTP,我们也不知道怎么用呀!! 我讲一下我试验成功的例子:主要是用一个ftp的组件aspinet.dll,然后包装成.cab文件,在客户端用<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""><style type="text/css"><!--.mystyle { font-size: 12px; border: 1px solid #CCCCCC;}--></style></HEAD><SCRIPT LANGUAGE="vbscript">sub upload() '读取客户端的文件名及路径 dim cfilename cfilename = document.form1.cfilename.value dim sfilename sfilename=document.form1.sfilename.value '读取希望上载到服务器上的文件名 FTP_TRANSFER_TYPE_ASCII = 1 FTP_TRANSFER_TYPE_BINARY = 2 '创建ftp ActiveX控件对象 set ftpconn=CREATEOBJECT("AspInet.FTP") if FtpConn.FTPPutFile(serverip,username,password,sfilename,cfilename,FTP_TRANSFER_TYPE_BINARY) then msgbox "上传成功..." window.close() else msgbox "上传失败..." window.close() end if end sub</SCRIPT> function chgtxt(){document.form1.sfilename.value=GetFileName(document.form1.cfilename.value)}function GetFileName(PathStr){ var Path; var filename; Path=PathStr.split("\\"); filename=Path[Path.length-1]; return filename;}//--></script><body> <FORM name=form1 METHOD=POST ACTION=""> <table width="100%" border="1" cellpadding="2" cellspacing="2" bordercolor="#CCCCCC"> <tr> <td width="34%" class="mystyle">客户端的文件名:</td> </tr> <tr> <td class="mystyle"><input name="cfilename" type="file" class="mystyle" onChange="chgtxt()" ></td> </tr> <tr> <td class="mystyle">上载到服务器后的文件名:</td> </tr> <tr> <td><input name="sfilename" type="text" class="mystyle" readonly="true"></td> </tr> <tr> <td><input name="button" type="button" class="mystyle"onClick="vbscript:aa()" value="确定"></td> </tr> </table> </FORM></body> </html> 功能简单,但是并不是很实用,没有进度条啊什么的。用vb的wininet控件开发activeX.dll也挺简单的,我也试成功过,在这里扔块砖头,希望大家能一起把这个ftp在B/s 上传功能完善一下 不太现实吧.用这个要到什么时候才能上传完啊ftp 我看过一个方法,不过自己写服务器程序和客户端程序,修改HTTP协议上传数据,我们的豪杰VOD上载程序就是这样,上载一个300M的程序(局域网)需要时间大概为50秒钟 好像 限制上传文件大小在 machine.config设置吧 <httpRuntime executionTimeout="90" maxRequestLength="1000000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/> 1G? use ftp. such as flashget, it can continue trans even after connection broken. 1G用WEB来传真的有点疯狂,不用考虑,用FTP,可以做成ACTIVEX,还是通过WEB来传。http://www.codeproject.com/dotnet/dotnetftp.asp 1G的文件拿硬盘拷吧,用2M的adsl来全整上传也要5个小时。 ASP。NET中一个问题! 很菜的问题,下面写入文本的语句错在哪?该怎么改啊?执行之后 在文本里显示:System.Data.DataRow GridView中如何实现 数字从小到大排序 请问在.net中如何使用office web contorl10的数据源控件 asp.net如何做到异步 page_load和调用JS中函数,说“对象为空” 关于javascript脚本的问题 插入语句错误,帮我看看为什么总说insert into 语法不正确,急,在线等 如何用.net制作大型网站并使用二级域名? 页面编码问题 奇怪的小问题 简单问题:如何使DataGrid不显示Header和Footer
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Page Language="C#" Debug="true" %>
<html>
<head>
<title>文件上传</title>
<script language="C#" runat="server">
public class YourPageClass
{
static string myConnString =@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\small program\download\网站下载系统专业版(Asp)\0001\download.asa;";
public static OleDbConnection myConnection = new OleDbConnection(myConnString);
}protected void Page_Load(object sender, EventArgs E )
{
DataSet ds =new DataSet();
OleDbDataAdapter command=new OleDbDataAdapter("select * from class", YourPageClass.myConnection);
command.Fill(ds,"class");
command.Dispose();
DropDownList1.DataSource=ds.Tables["class"];
DropDownList1.DataTextField="class";
DropDownList1.DataValueField="classid";
DropDownList1.DataBind();
}
public void UploadFile_Click(object sender, EventArgs E )
{
OleDbConnection myConnection_disc = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\small program\download\网站下载系统专业版(Asp)\0001\download.asa;");
OleDbCommand command_ml=new OleDbCommand("select * from ml",YourPageClass.myConnection);
OleDbCommand command_disc=new OleDbCommand("select disc from disc",myConnection_disc);
YourPageClass.myConnection.Open();
myConnection_disc.Open();
OleDbDataReader reader_ml=command_ml.ExecuteReader();
OleDbDataReader reader_disc=command_disc.ExecuteReader();
reader_ml.Read();
reader_disc.Read();
if (myFile.PostedFile!=null)
{
while(reader_ml.GetInt32(0)!=int.Parse(DropDownList1.SelectedItem.Value) )
//DropDownList1.SelectedItem.Value)
{
reader_ml.Read();
}
Labe_show.Text="dddd";
//RadioButtonList1.SelectedItem.Value ;
string nam=myFile.PostedFile.FileName;
int i=nam.LastIndexOf("\\");
string newnm=nam.Substring(i);
string a=reader_disc["disc"].ToString();
string b=reader_ml["md"].ToString();
myFile.PostedFile.SaveAs(a+b+newnm);
//fname.Text=myFile.PostedFile.FileName;
//fenc.Text=myFile.PostedFile.ContentType;
//fsize.Text=Convert.ToString(double.Parse(myFile.PostedFile.ContentLength.ToString())/1048576)+"M";
//fpath.Text=@"http://10.168.104.7\download\pro\" + reader_ml.GetString(1)+newnm;
}
//reader_disc.Close();
//reader_ml.Close();
//YourPageClass.myConnection.Close();
// myConnection_disc.Close();
}
</script>
</head>
<body bgcolor="#000080">
<form id="uploaderform" method="post" action="upload.aspx" enctype="multipart/form-data" runat="server">
<table border="2" cellspacing="1" width="388" id="AutoNumber1" height="338" style="WIDTH: 388px; HEIGHT: 338px">
<tr>
<td width="100%" height="330" align="left" valign="top">
<div align="center">
<center>
<table border="0" width="377" id="AutoNumber2" height="328" style="WIDTH: 377px; HEIGHT: 328px">
<tr>
<td width="82" height="32" align="middle" style="WIDTH: 82px">
<font color="#ffff00" size="2">请选择类别</font></td>
<td width="69%" height="32"><FONT face="宋体">
<asp:DropDownList id="DropDownList1" runat="server" Width="265px"></asp:DropDownList></FONT>
</td>
</tr>
<tr>
<td width="82" height="30" align="middle" style="WIDTH: 82px; HEIGHT: 30px">
<font size="2" color="#ffff00">请选择文件</font></td>
<td width="69%" height="30" style="HEIGHT: 30px"><FONT face="宋体"></FONT> <INPUT id="myFile" style="WIDTH: 259px; HEIGHT: 22px" type="file" size="24" name="File1" runat="server">
</td>
</tr>
<tr>
<td width="100%" height="23" colspan="2" align="middle" style="HEIGHT: 23px"><FONT face="宋体">
<INPUT id="Button_upload" style="WIDTH: 132px; HEIGHT: 24px" type="button" value="上 传" name="Button1" OnServerClick="UploadFile_Click" runat="server"></FONT>
</td>
</tr>
<tr>
<td width="100%" height="33" colspan="2" align="middle"><FONT face="宋体">
<asp:Label id="Labe_show" runat="server" Width="179px" ForeColor="Yellow"></asp:Label></FONT>
</td>
</tr>
<tr>
<td width="100%" height="152" colspan="2">
<font size="2" color="#ffffff"> </font><font size="2" color="#ffff00">文件名称:
<asp:Label id="fname" runat="server" Width="282px"></asp:Label></font><p>
<font size="2" color="#ffff00"> 文件类型:
<asp:Label id="fenc" runat="server" Width="285px"></asp:Label></p>
<P></FONT></P>
<p><font size="2" color="#ffff00"> 文件大小:
<asp:Label id="fsize" runat="server" Width="283px"></asp:Label></p>
<P></FONT></P>
<p><font size="2" color="#ffff00"> 上传路径:
<asp:Label id="fpath" runat="server" Width="287px"></asp:Label></font></p>
</td>
</tr>
<tr>
<td width="100%" height="33" colspan="2" align="middle">
<font size="2" color="#ffff00" a href="###" onclick="javascript:window.close(); return false;">
<strong>关闭窗口</strong></font></td>
</tr>
</table>
</center>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
上传小文件(20M成功过)没问题,web.config中最大长度设成了1048576,但是上传更大的文件时,IE浏览器下部的状态条在非常缓慢地向前移动,但当移动到大约快结束的时候,页面刷新不过来,页面不能显示,文件也没传成功,提示:
请尝试以下操作:打开 10.168.104.66 主页,然后查找指向您感兴趣信息的链接。
单击刷新按钮,或以后再试。
您要访问的网页有问题,无法显示。
单击搜索,寻找 Internet 上的信息。
也可查看相关站点列表。
HTTP 500 - 内部服务器错误
Internet Explorer
请问是什么原因?急死我了
<httpRuntime executionTimeout="90" maxRequestLength="1048576" useFullyQualifiedRedirectUrl="false"/>
executionTimeout="900"
不过你用HTTP上传这么大文件是很不合适的,而且速度是很慢的。建议用FTP吧
both are 3rd-party .net control and support GB level web upload.
可以用ftp控件,用vb做成ocx,dll都可以,vb里的wininet控件很方便,如果要功能强一点可以用 winsock控件,不过难度比较大。发布后打包下载到客户端
还是用ftp的好。有的可以支持断点序传
<httpRuntime maxRequestLength="10240" />你把10240改成“2024000”
再TRY 一下 ,如果还不行,你还是用FTP吧。
不过在很长的时间都可以使用!
主要是用一个ftp的组件aspinet.dll,然后包装成.cab文件,在客户端用
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style type="text/css">
<!--
.mystyle {
font-size: 12px;
border: 1px solid #CCCCCC;
}
-->
</style>
</HEAD>
<SCRIPT LANGUAGE="vbscript">
sub upload()
'读取客户端的文件名及路径
dim cfilename
cfilename = document.form1.cfilename.value dim sfilename
sfilename=document.form1.sfilename.value
'读取希望上载到服务器上的文件名
FTP_TRANSFER_TYPE_ASCII = 1
FTP_TRANSFER_TYPE_BINARY = 2
'创建ftp ActiveX控件对象
set ftpconn=CREATEOBJECT("AspInet.FTP")
if FtpConn.FTPPutFile(serverip,username,password,sfilename,cfilename,FTP_TRANSFER_TYPE_BINARY) then
msgbox "上传成功..."
window.close()
else
msgbox "上传失败..."
window.close()
end if
end sub
</SCRIPT>
function chgtxt()
{
document.form1.sfilename.value=GetFileName(document.form1.cfilename.value)
}
function GetFileName(PathStr)
{
var Path;
var filename; Path=PathStr.split("\\");
filename=Path[Path.length-1];
return filename;
}
//-->
</script>
<body> <FORM name=form1 METHOD=POST ACTION="">
<table width="100%" border="1" cellpadding="2" cellspacing="2" bordercolor="#CCCCCC">
<tr>
<td width="34%" class="mystyle">客户端的文件名:</td>
</tr>
<tr>
<td class="mystyle"><input name="cfilename" type="file" class="mystyle" onChange="chgtxt()" ></td>
</tr>
<tr>
<td class="mystyle">上载到服务器后的文件名:</td>
</tr>
<tr>
<td><input name="sfilename" type="text" class="mystyle" readonly="true"></td>
</tr>
<tr>
<td><input name="button" type="button" class="mystyle"onClick="vbscript:aa()" value="确定"></td>
</tr>
</table> </FORM>
</body> </html>
功能简单,但是并不是很实用,没有进度条啊什么的。用vb的wininet控件开发activeX.dll也挺简单的,我也试成功过,在这里扔块砖头,希望大家能一起把这个ftp在B/s 上传功能完善一下
用这个要到什么时候才能上传完啊
ftp
<httpRuntime executionTimeout="90" maxRequestLength="1000000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>