首先声明这个是我在使用FreeTextBox时遇到了这个控件把所有的服务器端代码写到客户端,
代码如下:
<
script runat
=
"
server
"
>

//
Messages
private
string
NoFileMessage
=
"
您没有选择文件。
"
;
private
string
UploadSuccessMessage
=
"
上传成功
"
;
private
string
UploadFailureMessage
=
"
上传失败。
"
;
private
string
NoImagesMessage
=
"
该文件夹不存在或者是空的
"
;
private
string
NoFolderSpecifiedMessage
=
"
您要上传到的文件夹不存在。
"
;
private
string
NoFileToDeleteMessage
=
"
您没有选中要删除的文件。
"
;
private
string
InvalidFileTypeMessage
=
"
您无法上传这种类型的文件。
"
;

private
string
[] AcceptedFileTypes
=
new
string
[]
{"jpg","jpeg","jpe","gif","png"}
;

//
Configuration
private
bool
UploadIsEnabled
=
true
;
//
是否允许上传文件
private
bool
DeleteIsEnabled
=
true
;
//
是否允许删除文件
private
string
DefaultImageFolder
=
"defaultFolder"
;
//
默认的起始文件夹

private
void
Page_Load(
object
sender, System.EventArgs e)
{
string isframe = "" + Request["frame"];

if (isframe != "")
{
MainPage.Visible = true;
iframePanel.Visible = false;
WebForm1 wf=new WebForm1();
string rif = "" + Request["rif"];
string cif = "" + Request["cif"];


if (cif != "" && rif != "")
{
RootImagesFolder.Value = DefaultImageFolder;
CurrentImagesFolder.Value = DefaultImageFolder;
}
UploadPanel.Visible = UploadIsEnabled;
DeleteImage.Visible = DeleteIsEnabled;

string FileErrorMessage = "";
string ValidationString = ".*(";
//[\.jpg]|[\.jpeg]|[\.jpe]|[\.gif]|[\.png])$"

for (int i=0;i<AcceptedFileTypes.Length; i++)
{
ValidationString += "[\\." + AcceptedFileTypes[i] + "]";
if (i < (AcceptedFileTypes.Length-1)) ValidationString += "|";
FileErrorMessage += AcceptedFileTypes[i];
if (i < (AcceptedFileTypes.Length-1)) FileErrorMessage += ", ";
}
FileValidator.ValidationExpression = ValidationString+")$";
FileValidator.ErrorMessage=FileErrorMessage;


if (!IsPostBack)
{
DisplayImages();
}

} else
{
}
}


public
void
UploadImage_OnClick(
object
sender, EventArgs e)
{

if (Page.IsValid)
{

if (CurrentImagesFolder.Value != "")
{

if (UploadFile.PostedFile.FileName.Trim() != "")
{

if (IsValidFileType(UploadFile.PostedFile.FileName))
{

try
{
string UploadFileName = "";
string UploadFileDestination = "";
UploadFileName = UploadFile.PostedFile.FileName;
UploadFileName = UploadFileName.Substring(UploadFileName.LastIndexOf("\\")+1);
UploadFileDestination = HttpContext.Current.Request.PhysicalApplicationPath;
UploadFileDestination += CurrentImagesFolder.Value;
UploadFileDestination += "\\";
UploadFile.PostedFile.SaveAs(UploadFileDestination + UploadFileName);
ResultsMessage.Text = UploadSuccessMessage;

} catch(Exception ex)
{
//ResultsMessage.Text = "Your file could not be uploaded: " + ex.Message;
ResultsMessage.Text = UploadFailureMessage;
}

} else
{
ResultsMessage.Text = InvalidFileTypeMessage;
}

} else
{
ResultsMessage.Text = NoFileMessage;
}

} else
{
ResultsMessage.Text = NoFolderSpecifiedMessage;
}

} else
{
ResultsMessage.Text = InvalidFileTypeMessage;
}
DisplayImages();
}


public
void
DeleteImage_OnClick(
object
sender, EventArgs e)
{

if (FileToDelete.Value != "" && FileToDelete.Value != "undefined")
{

try
{
string AppPath = HttpContext.Current.Request.PhysicalApplicationPath;
System.IO.File.Delete(AppPath + CurrentImagesFolder.Value + "\\" + FileToDelete.Value);
ResultsMessage.Text = "已删除: " + FileToDelete.Value;

} catch(Exception ex)
{
ResultsMessage.Text = "删除失败。";
}

} else
{
ResultsMessage.Text = NoFileToDeleteMessage;
}
DisplayImages();
}


private
bool
IsValidFileType(
string
FileName)
{
string ext = FileName.Substring(FileName.LastIndexOf(".")+1,FileName.Length-FileName.LastIndexOf(".")-1);

for (int i=0; i<AcceptedFileTypes.Length; i++)
{

if (ext == AcceptedFileTypes[i])
{
return true;
}
}
return false;
}



private
string
[] ReturnFilesArray()
{

if (CurrentImagesFolder.Value != "")
{

try
{
string AppPath = HttpContext.Current.Request.PhysicalApplicationPath;
string ImageFolderPath = AppPath + CurrentImagesFolder.Value;
string[] FilesArray = System.IO.Directory.GetFiles(ImageFolderPath,"*");
return FilesArray;

} catch
{
return null;
}

} else
{
return null;
}

}


private
string
[] ReturnDirectoriesArray()
{

if (CurrentImagesFolder.Value != "")
{

try
{
string AppPath = HttpContext.Current.Request.PhysicalApplicationPath;
string CurrentFolderPath = AppPath + CurrentImagesFolder.Value;
string[] DirectoriesArray = System.IO.Directory.GetDirectories(CurrentFolderPath,"*");
return DirectoriesArray ;

} catch
{
return null;
}

} else
{
return null;
}
}


public
void
DisplayImages()
{
string[] FilesArray = ReturnFilesArray();
string[] DirectoriesArray = ReturnDirectoriesArray();
string AppPath = HttpContext.Current.Request.PhysicalApplicationPath;
string AppUrl;
//Get the application's URL
if (Request.ApplicationPath == "/")
AppUrl = Request.ApplicationPath;
else
AppUrl = Request.ApplicationPath + "/";
GalleryPanel.Controls.Clear();

if ( (FilesArray == null || FilesArray.Length == 0) && (DirectoriesArray == null || DirectoriesArray.Length == 0) )
{
gallerymessage.Text = NoImagesMessage + ": " + RootImagesFolder.Value;

} else
{
string ImageFileName = "";
string ImageFileLocation = "";

int thumbWidth = 94;
int thumbHeight = 94;

if (CurrentImagesFolder.Value != RootImagesFolder.Value)
{

System.Web.UI.HtmlControls.HtmlImage myHtmlImage = new System.Web.UI.HtmlControls.HtmlImage();
myHtmlImage.Src = AppUrl + "../images/ftb/folder.up.gif";
myHtmlImage.Attributes["unselectable"]="on";
myHtmlImage.Attributes["align"]="absmiddle";
myHtmlImage.Attributes["vspace"]="36";

string ParentFolder = CurrentImagesFolder.Value.Substring(0,CurrentImagesFolder.Value.LastIndexOf("\\"));

System.Web.UI.WebControls.Panel myImageHolder = new System.Web.UI.WebControls.Panel();
myImageHolder.CssClass = "imageholder";
myImageHolder.Attributes["unselectable"]="on";
myImageHolder.Attributes["onclick"]="divClick(this,'');";
myImageHolder.Attributes["ondblclick"]="gotoFolder('" + RootImagesFolder.Value + "','" + ParentFolder.Replace("\\","\\\\") + "');";
myImageHolder.Controls.Add(myHtmlImage);

System.Web.UI.WebControls.Panel myMainHolder = new System.Web.UI.WebControls.Panel();
myMainHolder.CssClass = "imagespacer";
myMainHolder.Controls.Add(myImageHolder);

System.Web.UI.WebControls.Panel myTitleHolder = new System.Web.UI.WebControls.Panel();
myTitleHolder.CssClass = "titleHolder";
myTitleHolder.Controls.Add(new LiteralControl("向上"));
myMainHolder.Controls.Add(myTitleHolder);

GalleryPanel.Controls.Add(myMainHolder);
}

foreach (string _Directory in DirectoriesArray)
{

try
{
string DirectoryName = _Directory.ToString();

System.Web.UI.HtmlControls.HtmlImage myHtmlImage = new System.Web.UI.HtmlControls.HtmlImage();
myHtmlImage.Src = AppUrl + "../images/ftb/folder.big.gif";
myHtmlImage.Attributes["unselectable"]="on";
myHtmlImage.Attributes["align"]="absmiddle";
myHtmlImage.Attributes["vspace"]="29";

System.Web.UI.WebControls.Panel myImageHolder = new System.Web.UI.WebControls.Panel();
myImageHolder.CssClass = "imageholder";
myImageHolder.Attributes["unselectable"]="on";
myImageHolder.Attributes["onclick"]="divClick(this);";
myImageHolder.Attributes["ondblclick"]="gotoFolder('" + RootImagesFolder.Value + "','" + DirectoryName.Replace(AppPath,"").Replace("\\","\\\\") + "');";
myImageHolder.Controls.Add(myHtmlImage);

System.Web.UI.WebControls.Panel myMainHolder = new System.Web.UI.WebControls.Panel();
myMainHolder.CssClass = "imagespacer";
myMainHolder.Controls.Add(myImageHolder);

System.Web.UI.WebControls.Panel myTitleHolder = new System.Web.UI.WebControls.Panel();
myTitleHolder.CssClass = "titleHolder";
myTitleHolder.Controls.Add(new LiteralControl(DirectoryName.Replace(AppPath + CurrentImagesFolder.Value + "\\","")));
myMainHolder.Controls.Add(myTitleHolder);

GalleryPanel.Controls.Add(myMainHolder);

} catch
{
// nothing for error
}
}

foreach (string ImageFile in FilesArray)
{


try
{

ImageFileName = ImageFile.ToString();
ImageFileName = ImageFileName.Substring(ImageFileName.LastIndexOf("\\")+1);
ImageFileLocation = AppUrl;
ImageFileLocation = ImageFileLocation.Substring(ImageFileLocation.LastIndexOf("\\")+1);
//galleryfilelocation += "/";
ImageFileLocation += CurrentImagesFolder.Value;
ImageFileLocation += "/";
ImageFileLocation += ImageFileName;
System.Web.UI.HtmlControls.HtmlImage myHtmlImage = new System.Web.UI.HtmlControls.HtmlImage();
myHtmlImage.Src = ImageFileLocation;
System.Drawing.Image myImage = System.Drawing.Image.FromFile(ImageFile.ToString());
myHtmlImage.Attributes["unselectable"]="on";
//myHtmlImage.border=0;

// landscape image

if (myImage.Width > myImage.Height)
{

if (myImage.Width > thumbWidth)
{
myHtmlImage.Width = thumbWidth;
myHtmlImage.Height = Convert.ToInt32(myImage.Height * thumbWidth/myImage.Width);

} else
{
myHtmlImage.Width = myImage.Width;
myHtmlImage.Height = myImage.Height;
}
// portrait image

} else
{

if (myImage.Height > thumbHeight)
{
myHtmlImage.Height = thumbHeight;
myHtmlImage.Width = Convert.ToInt32(myImage.Width * thumbHeight/myImage.Height);

} else
{
myHtmlImage.Width = myImage.Width;
myHtmlImage.Height = myImage.Height;
}
}

if (myHtmlImage.Height < thumbHeight)
{
myHtmlImage.Attributes["vspace"] = Convert.ToInt32((thumbHeight/2)-(myHtmlImage.Height/2)).ToString();
}


System.Web.UI.WebControls.Panel myImageHolder = new System.Web.UI.WebControls.Panel();
myImageHolder.CssClass = "imageholder";
myImageHolder.Attributes["onclick"]="divClick(this,'" + ImageFileName + "');";
myImageHolder.Attributes["ondblclick"]="returnImage('" + ImageFileLocation.Replace("\\","/") + "','" + myImage.Width.ToString() + "','" + myImage.Height.ToString() + "');";
myImageHolder.Controls.Add(myHtmlImage);


System.Web.UI.WebControls.Panel myMainHolder = new System.Web.UI.WebControls.Panel();
myMainHolder.CssClass = "imagespacer";
myMainHolder.Controls.Add(myImageHolder);

System.Web.UI.WebControls.Panel myTitleHolder = new System.Web.UI.WebControls.Panel();
myTitleHolder.CssClass = "titleHolder";
myTitleHolder.Controls.Add(new LiteralControl(ImageFileName + "<BR>" + myImage.Width.ToString() + "x" + myImage.Height.ToString()));
myMainHolder.Controls.Add(myTitleHolder);

//GalleryPanel.Controls.Add(myImage);
GalleryPanel.Controls.Add(myMainHolder);
myImage.Dispose();

} catch
{

}
}
gallerymessage.Text = "";
}
}
</
script
>
<
asp:panel id
=
"
MainPage
"
runat
=
"
server
"
visible
=
"
false
"
>
<!
doctype html
public
"
-//W3C//DTD HTML 4.0 Transitional//EN
"
>
<
HTML
>
<
HEAD
>
<
META HTTP
-
EQUIV
=
"
Expires
"
CONTENT
=
"
0
"
>
<
title
>
插入图片
</
title
>
<
style
>


body
{
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
background: #ffffff;
width: 99.99%;
overflow:hidden;
border: 0;
}


body,tr,td
{
color: #000000;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10pt;
}


div.imagespacer
{
width: 120;
height: 126;
text-align: center;
float: left;
font: 10pt verdana;
margin: 5px;
overflow: hidden;
}

div.imageholder
{
margin: 0px;
padding: 0px;
border: 1 solid #CCCCCC;
width: 100;
height: 100;
}


div.titleholder
{
font-family: ms sans serif, arial;
font-size: 8pt;
width: 100;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}

</
style
>


<
script language
=
"
javascript
"
>

function GetPathByPeople()


{

var re1=UI_PUB_01.GetPath();
document.getElementById("txtPath").value=re1.value
//alert(document.getElementById("txtPath").value);
}
lastDiv
=
null
;

function divClick(theDiv,filename)
{

if (lastDiv)
{
lastDiv.style.border = "1 solid #CCCCCC";
}
lastDiv = theDiv;
theDiv.style.border = "2 solid #316AC5";
document.getElementById("FileToDelete").value = filename;

}

function gotoFolder(rootfolder,newfolder)
{
window.navigate("ftb.imagegallery.aspx?frame=1&rif=" + rootfolder + "&cif=" + newfolder);
}

function returnImage(imagename,width,height)
{
var arr = new Array();
arr["filename"] = imagename;
arr["width"] = width;
arr["height"] = height;
window.parent.returnValue = arr;
window.parent.close();
}
</
script
>
</
HEAD
>
<
body
>
<
table width
=
99.99
%
height
=
99.99
%
cellpadding
=
0
cellspacing
=
0
border
=
0
>

<
FORM encType
=
"
multipart/form-data
"
runat
=
"
server
"
>

<
tr
><
td
>
<
div id
=
"
galleryarea
"
style
=
"
width=99.99%; height:99.99%; overflow: auto;
"
>
<
asp:label id
=
"
gallerymessage
"
runat
=
"
server
"
></
asp:label
><
asp:textbox id
=
"
txtPath
"
style
=
"
Z-INDEX: 101; LEFT: 88px; display:none;POSITION: absolute; TOP: 160px
"
runat
=
"
server
"
>
aaaa
</
asp:textbox
>
<
asp:panel id
=
"
GalleryPanel
"
runat
=
"
server
"
></
asp:panel
>
</
div
>
</
td
></
tr
>
<
asp:Panel id
=
"
UploadPanel
"
runat
=
"
server
"
>
<
tr
><
td height
=
16
style
=
"
padding-left:10px;border-top: 1 solid #999999; background-color:#99ccff;
"
>
<
table
>
<
tr
>
<
td valign
=
top
><
input id
=
"
UploadFile
"
type
=
"
file
"
name
=
"
UploadFile
"
runat
=
"
server
"
style
=
"
width:300;
"
/></
td
>
<
td valign
=
top
><
asp:button id
=
"
UploadImage
"
Text
=
"
上传
"
runat
=
"
server
"
onclick
=
"
UploadImage_OnClick
"
/></
td
>
<
td valign
=
top
><
asp:button id
=
"
DeleteImage
"
Text
=
"
删除
"
runat
=
"
server
"
onclick
=
"
DeleteImage_OnClick
"
/></
td
>
<
td valign
=
middle
>
</
tr
>
<
tr
>
<
td colspan
=
3
>
<
asp:RegularExpressionValidator runat
=
"
server
"
ControlToValidate
=
"
UploadFile
"
id
=
"
FileValidator
"
display
=
"
dynamic
"
/>
<
asp:literal id
=
"
ResultsMessage
"
runat
=
"
server
"
/>
</
td
>
</
tr
></
table
>
<
input type
=
"
hidden
"
id
=
"
FileToDelete
"
Value
=
""
runat
=
"
server
"
/>
<
input type
=
"
hidden
"
id
=
"
RootImagesFolder
"
Value
=
"
images
"
runat
=
"
server
"
/>
<
input type
=
"
hidden
"
id
=
"
CurrentImagesFolder
"
Value
=
"
images
"
runat
=
"
server
"
/>
</
td
></
tr
>
</
asp:panel
>
</
form
>
</
table
>
</
body
>
</
HTML
>
</
asp:panel
>
<
asp:panel id
=
"
iframePanel
"
runat
=
"
server
"
>
<
html
>
<
head
><
title
>
插入图片
</
title
></
head
>
<
style
>

body
{
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
background: #ffffff;
overflow:hidden;
}
</
style
>
<
body
>
<
iframe style
=
"
width:99.99%;height:99.99%;border:0;
"
border
=
0
frameborder
=
0
src
=
"
ftb.imagegallery.aspx?frame=1&<%=Request.QueryString%>
"
></
iframe
>
</
body
>
</
html
>
</
asp:panel
>
我想在其上传的时候根据不同的人上传到不同的文件夹,同时显示不同的文件夹。即是修改DefaultImageFolder文件夹名。刚开始的时候总想通过WebForm2 wf=new WebForm2();DefaultImageFolder=wf.GetPath();这种声明方式去访问WebForm2的GetPath方法,但总是出现以下错误提示:
找不到类型或命名空间名称“WebForm2”
根据他的提示我 在其中加入了对这个WEB项目的应用:
<%
@ Import Namespace
=
"
Telegnosis.Projects.TeleOA.Web
"
%>
运行通过了,还达到了我预想的要求,这还是我第一次这样用,所以跟大家分享下。
点击这里下载DEMO