关于asp.net大文件上传组件的问题。

secondyang 2009-08-21 03:33:45
最近在研究大文件上传的问题。
使用了 Componentart 的Upload控件(2008.2 for asp 2.0) 和 RadUpload控件(2008.2 for ajax)。
都有同样的一个问题。
就是如果在页面上有除了Upload Button以外的可以提交页面的按钮时。只要选择了上传文件,不管点击那个按钮,选择的上传文件都会上传。

请问大家有没有解决方案?
...全文
138 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoming120 2009-08-28
  • 打赏
  • 举报
回复
ding
secondyang 2009-08-28
  • 打赏
  • 举报
回复
up
Lovely_baby 2009-08-24
  • 打赏
  • 举报
回复
actrl+f 查看你页面中的form标签
没用的删掉
secondyang 2009-08-24
  • 打赏
  • 举报
回复
前台代码中请将
<form id ="form2" >
<asp:Button ID="Button3" runat="server" OnClientClick='window.location = "Default.aspx";return true;'
Text="clear" />
</form>
这段删除或注释。
secondyang 2009-08-24
  • 打赏
  • 举报
回复
JS:

// JScript 文件

//选择上传文件时触发
function file_change(sender,args){
var filename = args.get_fileName();
var filetype = getType(filename);
//以下增加判断文件类型的代码
if(1!=1){

}
}

//返回文件扩展名
function getType(strfilename)
{
var strcc = strfilename;
strcc = strcc.toString();
var start = strcc.lastIndexOf(".");
var end = strcc.length;
var types =strcc.substring(start+1,end);
types=types.toLowerCase();
return types;
}

function add_file(ctrl,el) {
ctrl.AddFile();
if (ctrl.FileCount == ctrl.MaximumFileCount) el.className = "add-d";
}

function remove_files(ctrl) {
if (ctrl.FileCount < ctrl.MaximumFileCount) el.className = "add";
}

function move_caret(el) {
var i = el.value.length + 1;
if (el.createTextRange) {
var c = document.selection.createRange().duplicate();
while (c.parentElement() == el && c.move("character",1) == 1) --i;
}
}


function upload_begin(sender,args) { }

function upload_end(sender,args) {
//alert('上传文件成功!');
}

function upload_error(sender,args) {
UploadDialog.close();
var msg = args.get_message();
if(msg=='Upload too big.'){
alert('上传照片过大!请将照片快递至我公司。');
}
else{
alert('上传失败,请重新上传!');
}
window.location = "Default.aspx";
}

// File size formatting function
// n = size in bytes
// fmt = output format ("b","kb","mb","gb") [optional; if omitted it will return the best match]
function format_file_size(n,fmt) {
if (!fmt) { // no formatting specified; automatically select the best format
if (n < 1000) fmt = "b";
else if (n < 1000000) fmt = "kb";
else if (n < 1000000000) fmt = "mb";
else fmt = "gb";
}

switch(fmt.toLowerCase()) {
case "kb": return String((n * 0.001).toFixed(2)) + " KB";break;
case "mb": return String((n * 0.000001).toFixed(2)) + " MB";break;
case "gb": return String((n * 0.000000001).toFixed(2)) + " GB";break;
default: return String(n.toFixed(2)) + " B";
}
}

function get_percentage(n) { return String(Math.round(n * 100)); }

// Time formatting function
// t = time in seconds
// returns a string formatted thusly: hh:mm:ss [hours is only present if needed]
function format_time(t) {
var s = Math.floor(t);
var m = Math.floor(s / 60);
var h = Math.floor(m / 60);

s = pad_time(s % 60);
m = pad_time(m % 60) + ":";
h = (h == 0) ? "" : pad_time(h % 60) + ":";

return (h + m + s);
}

function pad_time(t) { return String(((t > 9) ? "" : "0") + t); }

function init_upload(ctrl) {
if (ctrl.GetFiles().length > 0 && !ctrl.Uploading) {
ctrl.Upload();
UploadDialog.Show();
}
}

// Background image preloader
(new Image()).src = "images/vertical.png";
secondyang 2009-08-24
  • 打赏
  • 举报
回复
前台:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<%@ Register Assembly="ComponentArt.Web.UI" Namespace="ComponentArt.Web.UI" TagPrefix="ComponentArt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Upload Test</title>
<link href="style.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" language="javascript" src="Js/Default.js">
</script>

</head>
<body>
<form id="form1" runat="server">
<div class="DemoArea">

<div class="sel">
<ComponentArt:Upload
ID="Upload1"
RunAt="server"
MaximumFileCount="1"
AutoPostBack="true"
FileInputClientTemplateId="FileInputTemplate"
FileInputImageUrl="images/_browse.png"
FileInputHoverImageUrl="images/_browse-h.png"
ProgressClientTemplateId="ProgressTemplate"
ProgressDomElementId="upload-progress"
MaximumUploadSize = "120000"
>
<ClientEvents>
<FileChange EventHandler="file_change" />
<UploadBegin EventHandler="upload_begin" />
<UploadEnd EventHandler="upload_end" />
<UploadError EventHandler ="upload_error" />
</ClientEvents>

<ClientTemplates>
<ComponentArt:ClientTemplate ID="FileInputTemplate" runat="server">
<div class="file">
<div class='## DataItem.FileName ? "filename" : "filename empty"; ##'><input value='## DataItem.FileName ? DataItem.FileName : "请选择上传文件"; ##' onfocus="this.blur();" /></div>
<a href="javascript:void(0);" onclick="this.blur();return false;" class="browse" title="Browse for a file">#$FileInputImage</a>
<%-- <a href="javascript:void(0);" onclick="init_upload(Upload1);this.blur();return false;" class="upload" id="btn-upload"></a>--%>
</div>
</ComponentArt:ClientTemplate>

<ComponentArt:ClientTemplate ID="ProgressTemplate" runat="server">
<!-- Dialogue contents -->
<div class="con">
<div class="stat">
<h3 rel="total">上传文件: <span class="red">## DataItem.CurrentFile; ##</span></h3>
<div class="prog">
<div class="con">
<div class="bar" style="width:## get_percentage(DataItem.Progress) ##%;"></div>
</div>
</div>
<div class="lbl"><strong>## format_file_size(DataItem.ReceivedBytes) ##</strong> (## get_percentage(DataItem.Progress) ##%) 已上传</div>
</div>
</div>
<!-- /Dialogue contents -->

<!-- Dialogue footer -->
<div class="ftr">
<div class="ftr-l"></div>
<div class="ftr-m">
<div class="info" id="info1">
<span>已用时间: <strong>## format_time(DataItem.ElapsedTime); ##</strong></span>
<span style="padding-left:8px;">剩余时间: <strong>## format_time(DataItem.ElapsedTime + DataItem.RemainingTime); ##</strong></span>
<span style="padding-left:8px;">上传速度: <strong>## DataItem.Speed.toFixed(2) ## KB/S</strong></span>
</div>
<div class="btns">
<%--<a onclick="Parent.abort();return false;" href="javascript:void(0);" rel="cancel">
<span class="l"></span>
<span class="m" id="btn1">取消上传</span>
<span class="r"></span>
</a>--%>
</div>
</div>
<div class="ftr-r"></div>
</div>
<!-- /Dialogue footer -->
</ComponentArt:ClientTemplate>
</ClientTemplates>
</ComponentArt:Upload>
</div>

<%-- Upload Dialogue & Control --%>
<ComponentArt:Dialog
ID="UploadDialog"
RunAt="server"
AllowDrag="true"
AllowResize="false"
Modal="false"
Alignment="MiddleCentre"
Width="458"
Height="247"
ContentCssClass="dlg-up"
ContentClientTemplateId="UploadContent"

>
<ClientTemplates>
<ComponentArt:ClientTemplate id="UploadContent">
<div class="ttl" onmousedown="UploadDialog.StartDrag(event);">
<div class="ttlt">
<div class="ttlt-l"></div>
<div class="ttlt-m">
<%--<a class="close" href="javascript:void(0);" onclick="UploadDialog.close();return false;"></a>--%>
<span>正在上传...</span>
</div>
<div class="ttlt-r"></div>
</div>

<div class="ttlb">
<div class="ttlb-l"></div>
<div class="ttlb-m"></div>
<div class="ttlb-r"></div>
</div>
</div>

<!-- for contents & footer, see upload progress client template -->
<div id="upload-progress"></div>
</ComponentArt:ClientTemplate>
</ClientTemplates>
</ComponentArt:Dialog>
<input id="Button1" type="button" value="button" onclick = "init_upload(Upload1);this.blur();return false;"/>
<asp:Button ID="Button2" runat="server" OnClientClick='window.location = "Default.aspx";return true;'
Text="clear" />
</div>
</form>
<form id ="form2" >
<asp:Button ID="Button3" runat="server" OnClientClick='window.location = "Default.aspx";return true;'
Text="clear" />
</form>
</body>
</html>

后台:

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
Upload1.TempFileFolder = Server.MapPath("~/Uploads/temp")
'Upload1.DestinationFolder = Server.MapPath("~/Uploads")
End Sub

'文件上传完成后触发此事件
Protected Sub Upload1_Uploaded(ByVal sender As Object, ByVal e As ComponentArt.Web.UI.UploadUploadedEventArgs) Handles Upload1.Uploaded
For Each oInfo As ComponentArt.Web.UI.UploadedFileInfo In e.UploadedFiles
Dim strFileExt '文件扩展名
strFileExt = oInfo.Extension
'strFileExt = System.IO.Path.GetExtension(oInfo.FileName)
'将上传文件改名
oInfo.SaveAs(Server.MapPath("~/Uploads") & "/111." & strFileExt, True)
Next
End Sub

End Class

xiequan2 2009-08-24
  • 打赏
  • 举报
回复
大文件上传,自己写的函数
 protected void Button1_Click(object sender, EventArgs e)
{
string str = File1.PostedFile.FileName;
string filename = Path.GetFileName(str);
FileStream fsr = File.OpenRead(str);
FileStream fsw = File.Create(@"e:\"+filename);
byte[] b = new byte[1024];
while (fsr.Read(b, 0, 1024) != 0)
{
fsw.Write(b, 0, 1024);
}
}

<httpRuntime maxRequestLength="1048576"/>
secondyang 2009-08-24
  • 打赏
  • 举报
回复
UP

CopperBell 2009-08-21
  • 打赏
  • 举报
回复
直接貼代碼
CopperBell 2009-08-21
  • 打赏
  • 举报
回复
拿ComponentArt舉例說明
估計你是采用的client端upload,然后在Page_Load()中為Upload1指定了上傳的文件夾
你先確定你的<input type="button" value="Upload" onclick="Upload1.upload()"/>有沒有寫錯。
secondyang 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiahouwen 的回复:]
放到不同的form里去
[/Quote]

用到了母版页,怎么放到不同的Form里?
lgaimin 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiahouwen 的回复:]
放到不同的form里去
[/Quote]
up;
活靶子哥哥 2009-08-21
  • 打赏
  • 举报
回复
放到不同的form里去

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧