如何实现一个能多选的FileUpload控件?
大过年的,先给大伙拜个早年哈:)客户要上传一批文件,嫌一个一个点麻烦,要我们做这样一个BT控件。大伙帮忙想想有什么办法没有?
我找到一个方法,可是有些问题。主要是根据http://dev.yesky.com/msdn/481/2248981.shtml这篇文章,我觉得这个方法挺简单的,就是客户端要装.net类库挺不好。我就写了个类重新封装了OpenFileDialog,主要代码大概是这样子:
public inte易做图ce AxMyControl
{
String[] FileNames { get; }
}
public class MyFileUpload : System.Windows.Forms.UserControl, AxMyControl
{
public String[] FileNames
{
get
{
String[] str = new String[fileList.Items.Count];
fileList.Items.CopyTo(str, 0);//fileList是个ListBox
return str;
}
}
//点击浏览按钮的事件
private void btOpen_Click(object sender, EventArgs e)
{
if (this.dialog.ShowDialog() == DialogResult.OK)
{
foreach (string filename in dialog.FileNames)
{
fileList.Items.Add(filename);
}
}
}
//点击移除按钮的事件
private void btRemove_Click(object sender, EventArgs e)
{
foreach (object obj in fileList.SelectedItems)
{
fileList.Items.Remove(obj);
}
}
}
然后我把它放在下面的html里显示:
<html>
<OBJECT id = "MyFileUpload1" name = "MyFileUpload1" classid = "MyFileUpload.dll#MyNameSpace.MyFileUpload" width = 288 height = 500 >
</OBJECT>
</html>
这里有一个问题:当点击浏览在对话框中选好文件点打开时会报System.Security.Permissions.FileIOPermission的异常,上网搜了一下,好象是ASP.NET的帐户权限问题,那我就把它放ASP页面里,然后在Web.Config里添上:
<system.web>
<trust level="Full" originUrl=""/>
</system.web>
这回应该没问题了吧?我的ASP页面大概是这样子的:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="***.aspx.cs" Inherits="***" Title="数据文件上报" %>
<asp:Content ID="***" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<OBJECT id = "MyFileUpload1" name = "MyFileUpload1" classid = "MyFileUpload.dll#MyNameSpace.MyFileUpload" width = 288 height = 500 >
</OBJECT>
</asp:Content>
可是却显示不出来。原来把<OBJECT>标签换成<asp:FileUpload ID="fuFile" runat="server" />是可以正常显示的。大伙帮我看看问题出在哪儿了?或者有其他的方法实现这个控件吗? --------------------编程问答-------------------- 用VB自己写个控件实现就可以了嘛 --------------------编程问答-------------------- 控件不是这样写的. 所有控件原始都是input --------------------编程问答-------------------- asp的不懂,试下结合javascript和activex得到文件列表中各文件的流,再用循环把文件流post到指定的处理地址上,不知道这样的思路能实现不,呵呵
--------------------编程问答-------------------- mark --------------------编程问答-------------------- 回NekChan:我也觉得控件都应该继承自WebControl的,不过那篇文章的方法很新颖,设计控件时也能用设计器。不过要是用继承WebControl的方法设计的话我不太在行呀,该怎么做呢?才学ASP没两天。 --------------------编程问答-------------------- 它这个是指ActiveX,就好像你插入一个Flash或者WMP在网页上那样,当然是继承自WinForm的Control啦。 --------------------编程问答-------------------- up --------------------编程问答--------------------
补充:.NET技术 , ASP.NET