***Update***
Endelig har jeg nu et færdigt produkt som jeg godt tør stå ved. For en god ordens skyld ligger jeg lige scriptet op her så andre også kan få glæde af det.
Everclear - smid et svar, du har fortjent hver eneste point.
***Vejledning***
1. Opret en mappe på IIS - kald den hvad som helst (min hedder filmanager).
2. Opret 3 undermapper kaldet: "App_Code", "uploads" og "images"
3. I "uploads" oprettes en undermappe kaldet "billeder"
4. I "App_Code" oprettes 2 .cs filer kaldet ImageManager.cs og ImageObject.cs
5. Opret en .aspx fil kaldet default.aspx
6. I "images" mappen skal billedefilerne til ImageButtons'ene ligge (Find fx. selv nogle)
Her er hvordan filerne skal se ud.
**ImageManager.cs**
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Collections.Generic;
public class ImageManager
{
public List<ImageObject> GetImageList(string path)
{
List<ImageObject> files = new List<ImageObject>();
DirectoryInfo di = new DirectoryInfo(path);
foreach (FileInfo file in di.GetFiles())
{
ImageObject io = new ImageObject();
io.FileType = file.Extension;
io.FileName = file.Name;
io.FileSize = file.Length;
files.Add(io);
}
return files;
}
public ImageObject GetImage(string fullPath)
{
FileInfo fi = new FileInfo(fullPath);
ImageObject io = new ImageObject();
io.FileType = fi.Extension;
io.FileName = fi.Name;
io.FileSize = fi.Length;
return io;
}
public ImageManager()
{
}
}
**ImageObject.cs**
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class ImageObject
{
private long _fileSize;
private string _fileName;
private string _fileType;
public string FileType
{
get { return _fileType; }
set { _fileType = value; }
}
public string FileName
{
get { return _fileName; }
set { _fileName = value; }
}
public long FileSize
{
get { return _fileSize; }
set { _fileSize = value; }
}
public ImageObject()
{
}
}
**default.aspx**
<%@ Page Language="C#" AutoEventWireup="true" debug="true" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
ImageManager im = new ImageManager();
protected void Page_Load(object sender, EventArgs e){
if (!IsPostBack){
LoadData();
}
}
void LoadData(){
ImagePreview.ImageUrl = "images/preview.jpg";
imbSletMappe.Visible = false;
imbSletBillede.Visible = false;
DirectoryInfo dir = new DirectoryInfo(Server.MapPath("uploads/billeder/"));
DirectoryInfo[] directories = dir.GetDirectories();
ddlUnderMapper.DataSource = directories;
ddlUnderMapper.DataBind();
ddlUnderMapper.Items.Insert(0, "Billeder");
lblBillede.Text = "";
string path = Server.MapPath("uploads/billeder/");
gvFiles.DataSource = im.GetImageList(path);
gvFiles.DataBind();
}
void LoadMapper(){
if(ddlUnderMapper.SelectedValue == "Billeder")
{
string path = Server.MapPath("uploads/billeder/");
gvFiles.DataSource = im.GetImageList(path);
gvFiles.DataBind();
}
else{
string path = Server.MapPath("uploads/billeder/" + ddlUnderMapper.SelectedValue);
gvFiles.DataSource = im.GetImageList(path);
gvFiles.DataBind();
}
}
protected void gvFiles_SelectedIndexChanged(object sender, EventArgs e){
imbSletBillede.Visible = true;
if(ddlUnderMapper.SelectedValue == "Billeder")
{
string FileName = gvFiles.SelectedDataKey.Value.ToString();
string path = Server.MapPath("uploads/billeder/") + FileName;
ImageObject io = im.GetImage(path);
Session["Filnavn"] = FileName;
tbFilNavn.Text = "uploads/billeder/" + io.FileName;
lblBillede.Text = io.FileName;
ImagePreview.ImageUrl = path;
}
else{
string FileName = gvFiles.SelectedDataKey.Value.ToString();
string path = Server.MapPath("uploads/billeder/") + ddlUnderMapper.SelectedValue + "/" + FileName;
ImageObject io = im.GetImage(path);
Session["FilNavn"] = FileName;
tbFilNavn.Text = "uploads/billeder/" + ddlUnderMapper.SelectedValue + "/" + io.FileName;
lblBillede.Text = io.FileName;
ImagePreview.ImageUrl = path;
}
}
void UnderMapper_OnSelectedIndexChanged(object sender, EventArgs e){
if(ddlUnderMapper.SelectedValue == "Billeder")
{
LoadData();
}
else
{
imbSletMappe.Visible = true;
lblBillede.Text = "";
string path = Server.MapPath("uploads/billeder/" + ddlUnderMapper.SelectedValue);
ImagePreview.ImageUrl = "images/preview.jpg";
gvFiles.DataSource = im.GetImageList(path);
gvFiles.DataBind();
}
}
void NyMappeVisibleTrue(Object sender, System.EventArgs e) {
tbMappeNavn.Visible = true;
btOpretMappe.Visible = true;
btFortrydOpretMappe.Visible = true;
lblTekst.Text = "Navnet må ikke indeholde mellemrum, tegn eller æ,ø og å";
tbMappeNavn.Text = "";
tbFilNavn.Text = "";
}
protected void OpretMappe(object sender, EventArgs e){
try {
Directory.CreateDirectory(MapPath("uploads/billeder") + "\\" + tbMappeNavn.Text);
btOpretMappe.Visible = false;
tbMappeNavn.Visible = false;
btFortrydOpretMappe.Visible = false;
lblTekst.Text = "";
LoadData();
}
catch(Exception Ex){
}
}
void FortrydOpretMappe(Object sender, System.EventArgs e) {
tbMappeNavn.Visible = false;
btOpretMappe.Visible = false;
btFortrydOpretMappe.Visible = false;
lblTekst.Text = "";
}
protected void SletMappe(object sender, EventArgs e){
try {
Directory.Delete(MapPath("uploads/billeder") + "\\" + ddlUnderMapper.SelectedValue);
LoadData();
}
catch(Exception Ex){
}
}
protected void SletBillede(object sender, EventArgs e){
ImagePreview.ImageUrl = "images/preview.jpg";
imbSletBillede.Visible = false;
lblBillede.Text = "";
tbFilNavn.Text = "";
if(ddlUnderMapper.SelectedValue == "Billeder")
{
System.IO.File.Delete(MapPath("uploads/billeder") + "\\" + Session["FilNavn"]);
LoadMapper();
}
else{
System.IO.File.Delete(MapPath("uploads/billeder") + "\\" + ddlUnderMapper.SelectedValue + "\\" + Session["FilNavn"]);
LoadMapper();
}
}
void UploadFile(object sender, EventArgs e) {
OurSpan.InnerHtml = "";
if(ddlUnderMapper.SelectedValue == "Billeder")
{
UploadTilBilleder();
}
else
{
UploadTilUnderMappe();
}
}
void UploadTilBilleder(){
string TheFile = FileBox.PostedFile.FileName;
if (TheFile.Length > 0) {
string FileType = FileBox.PostedFile.ContentType;
int FileSize = FileBox.PostedFile.ContentLength;
if (FileType != "image/jpeg" & FileType != "image/pjpeg" & FileType !="image/gif" & FileType !="image/png") {
OurSpan.InnerHtml = "Kun filer af typen jpg, gif og png kan uploades";
}
else if (FileSize > 1000000) {
OurSpan.InnerHtml = "Filer over 1mb kan ikke uploades.";
}
else {
string filepath = Server.MapPath("") + "\\uploads\\" + "\\/\\" + "\\billeder\\";
string filename = TheFile.Substring(TheFile.LastIndexOf("\\")+1);
string fullpath = filepath + filename;
try {
FileBox.PostedFile.SaveAs(fullpath);
tbFilNavn.Text = "uploads/billeder/" + filename;
ImagePreview.ImageUrl = "uploads/billeder/" + filename;
Session["FilNavn"] = filename;
lblBillede.Text = filename;
imbSletBillede.Visible = true;
LoadMapper();
}
catch (Exception Exc) {
OurSpan.InnerHtml = "Kunne ikke uploade" + filename + "<br>" + Exc.ToString();
}
}
}
else {
OurSpan.InnerHtml = "Vælg venligst en fil at uploade";
}
}
void UploadTilUnderMappe(){
string TheFile = FileBox.PostedFile.FileName;
if (TheFile.Length > 0) {
string FileType = FileBox.PostedFile.ContentType;
int FileSize = FileBox.PostedFile.ContentLength;
if (FileType != "image/jpeg" & FileType != "image/pjpeg" & FileType !="image/gif" & FileType !="image/png") {
OurSpan.InnerHtml = "Kun filer af typen jpg, gif og png kan uploades";
}
else if (FileSize > 1000000) {
OurSpan.InnerHtml = "Filer over 1mb kan ikke uploades.";
}
else {
string filepath = Server.MapPath("") + "\\uploads\\" + "\\/\\" + "\\billeder\\" + "\\/\\" + ddlUnderMapper.SelectedValue + "\\";
string filename = TheFile.Substring(TheFile.LastIndexOf("\\")+1);
string fullpath = filepath + filename;
try {
FileBox.PostedFile.SaveAs(fullpath);
tbFilNavn.Text = "uploads/billeder/" + ddlUnderMapper.SelectedValue + "/" + filename;
ImagePreview.ImageUrl = "uploads/billeder/" + ddlUnderMapper.SelectedValue + "/" + filename;
Session["FilNavn"] = filename;
lblBillede.Text = filename;
imbSletBillede.Visible = true;
LoadMapper();
}
catch (Exception Exc) {
OurSpan.InnerHtml = "Kunne ikke uploade" + filename + "<br>" + Exc.ToString();
}
}
}
else {
OurSpan.InnerHtml = "Vælg venligst en fil at uploade";
}
}
</script>
<!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>Assetmanager</title>
</head>
<body bgcolor="#F0F0EE">
<form runat="server">
<table width="700" border="1" bgcolor="#FFFFFF" bordercolor="#919B9C" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="3" style="padding-left:5px; padding-right:5px">
Mappe:
<asp:DropDownList ID="ddlUnderMapper"
OnSelectedIndexChanged="UnderMapper_OnSelectedIndexChanged"
AutoPostBack="true"
runat="server"/>
<asp:ImageButton ID="imbOpretMappe"
ImageUrl="images/CreateFolder.gif"
AlternateText="Ny mappe"
OnClick="NyMappeVisibleTrue"
runat="server"/>
<asp:ImageButton ID="imbSletMappe"
ImageUrl="images/DeleteFolder.gif"
AlternateText="Slet mappe"
OnCommand="SletMappe"
OnClientClick="return confirm('Mappen slettes kun såfremt den er tom!')"
runat="server"/>
<asp:ImageButton ID="imbSletBillede"
ImageUrl="images/DeleteFile.gif"
AlternateText="Slet billede"
OnCommand="SletBillede"
OnClientClick="return confirm('Vil du slette dette billede?')"
runat="server"/>
<asp:TextBox ID="tbMappeNavn"
Visible="false"
runat="server"/>
<asp:LinkButton ID="btOpretMappe"
Text="opret mappe"
OnClick="OpretMappe"
Visible="false"
runat="server"/>
<asp:LinkButton ID="btFortrydOpretMappe"
Text="fortryd"
OnClick="FortrydOpretMappe"
Visible="false"
runat="server"/>
<asp:Label ID="lblTekst"
runat="server"/>
</td>
</tr>
<tr>
<td colspan="3" style="padding-left:5px; padding-right:5px">
Billede:
<asp:Label ID="lblBillede" runat="server"/>
</td>
</tr>
<tr>
<td width="350" height="300" valign="top" align="left"><div style="OVERFLOW: auto; WIDTH: 350px; HEIGHT: 300px">
<asp:Image id="ImagePreview"
runat="server" /></div> </td>
<td width="350" height="300" colspan="2" valign="top" align="left" style="padding-left:4px"><div style="OVERFLOW: auto; WIDTH: 350px; HEIGHT: 300px">
<asp:GridView ID="gvFiles"
AutoGenerateColumns="true"
BorderWidth="0"
DataKeyNames="FileName"
OnSelectedIndexChanged="gvFiles_SelectedIndexChanged"
runat="server">
<columns>
<asp:CommandField SelectText="vælg" ShowSelectButton="True"/>
</columns>
</asp:GridView></div>
</td>
</tr>
<tr>
<td style="padding-left:5px; padding-right:5px">
<asp:FileUpLoad ID="FileBox"
runat="server"/>
<asp:Button ID="btn_Submit"
Text="upload"
OnClick="UploadFile"
runat="server"/> </td>
<td style="padding-left:5px; padding-right:5px">
Billede sti:
<asp:TextBox ID="tbFilNavn"
runat="server"/>
<input type="button"
class=inputbutton value="Indsæt"
onClick="window.opener.location.reload();self.close()">
</td>
</tr>
</table>
<div align="center"><span id="OurSpan" runat="server" /></div>
</form>
</body>
</html>