/// <summary> /// Gibt die enthaltene Datei mit dem angegebenen Namen zurück, bzw. null wenn sie nicht gefunden wurde. /// Es können auch vorgängige Verzeichnisse durch Slash getrennt angegeben werden. z.B. "Directory/File.txt" /// </summary> /// <param name="filePath">Name der Datei</param> /// <returns>Dateiwrapper, bzw. null wenn sie nicht gefunden wurde</returns> public FileWrapper GetFile(string filePath) { int slashPos = filePath.IndexOf('/'); // Slash an erster Position werden übersprungen. if (slashPos == 0) { filePath = filePath.Substring(1); slashPos = filePath.IndexOf('/'); } if ((-1 == slashPos)) { // Kein Unterverzeichnis mehr enthalten. Es wird nach der Datei gesucht. return(Array.Find(Files, delegate(FileWrapper file) { return file.FileName == filePath; })); } else { // Suche nach dem Unterverzeichnis. string dirName = filePath.Substring(0, slashPos); DirectoryWrapper subDir = Array.Find(SubDirectories, delegate(DirectoryWrapper dir) { return(dir.Name == dirName); }); if (subDir != null) { return(subDir.GetFile(filePath.Substring(slashPos + 1))); } else { return(null); // Verzeichnis konnte nicht gefunden werden. } } }
/// <summary> /// Ereignishandler für den OK Button. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void OkBtn_Click(object sender, EventArgs e) { bool success = false; // Falls kein Name angegeben wurde, wird der Dateiname der Upload Datei verwendet. if (string.IsNullOrEmpty(fileName.Text.Trim())) { fileName.Text = fileSelect.FileName; } else { // Sicherstellen dass der Dateiname die selbe Endung aufweist. fileName.Text = fileName.Text.Trim(); int lastPoint = fileSelect.FileName.LastIndexOf('.'); if (-1 != lastPoint) { // Ermitteln der Endung der Upload Datei. string extension = fileSelect.FileName.Substring(lastPoint); // Stimmt die Endung nicht überein, wird sie einfach angehängt. if (!fileName.Text.EndsWith(extension, true, null)) { // Zuerst muss aber sichergestellt werden dass die maximale Länge nicht überschritten wird. int availLength = 255 - extension.Length; if (availLength < fileName.Text.Length) { fileName.Text.Remove(availLength); } fileName.Text += extension; } } } try { // Überprüfen ob die Datei bereits existiert und ob der Name gültig ist. DirectoryWrapper currDir = ((IStateProcessor)Parent).ConfigAgent.CurrentDirectory; if (null != currDir.GetFile(fileName.Text) || !currDir.IsFileNameAllowed(fileName.Text)) { fileAllreadyExist.IsValid = false; } else { // Datei speichern. fileSelect.PostedFile.SaveAs(currDir.DirectoryData.FullName + "\\" + fileName.Text); // Dateiwrapper erzeugen und dem Cache hinzufügen. currDir.AddFile(fileName.Text, fileDesc.Text, modDate.DateTimeValue); success = true; } } catch (Exception ex) { uploadException.Text = Portal.API.Language.GetText(this, "UploadException") + ": " + ex.Message; uploadException.IsValid = false; } if (true == success) { ProcessEvent((int)StateEvent.ok); } }