コード例 #1
0
        /// <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.
                }
            }
        }
コード例 #2
0
        /// <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);
            }
        }