/// <summary> /// Méthode statique de constuction du flux de fichier. /// </summary> /// <param name="_PATH">Chaîne de caractère contenant le chemin du fichier.</param> /// <param name="_TYPE"><code>CYS_STREAM_TYPE</code> correspondant au dossier cible dans le dossier de ressources de l'utilisateur.</param> /// <param name="_ID">Identifiant de l'utilisateur en base de données.</param> /// <returns><code>CYS_STREAM</code> correspondant au flux du fichier reçu par le serveur.</returns> public static CYS_STREAM FILE(string _PATH, CYS_STREAM_TYPE _TYPE, int _ID) { CYS_STREAM _elem = null; long n = 0; try { FileInfo fi = new FileInfo(_PATH); try { var a = ((CYS_STREAM_EXT)Enum.Parse(typeof(CYS_STREAM_EXT), fi.Extension.Replace(".", String.Empty).ToUpperInvariant())); } catch (Exception ex) { return _elem; } if (!Int64.TryParse(Path.GetFileNameWithoutExtension(_PATH), out n)) return _elem; using (Stream f = File.OpenRead(_PATH)) { _elem = new CYS_STREAM { CHOSEN = false, DIR_PATH = GET_PATH_FROM_TYPE(_TYPE, _ID), EXTENSION = ((CYS_STREAM_EXT)Enum.Parse(typeof(CYS_STREAM_EXT), fi.Extension.Replace(".", String.Empty).ToUpperInvariant())), ID = Convert.ToInt64(Path.GetFileNameWithoutExtension(_PATH)), MIME = GET_MIME_FROM_EXT(((CYS_STREAM_EXT)Enum.Parse(typeof(CYS_STREAM_EXT), fi.Extension.Replace(".", String.Empty).ToUpperInvariant()))), NAME = Path.GetFileNameWithoutExtension(_PATH), SAVED = true, STREAM = GET_BYTES(f), TYPE = _TYPE }; return _elem; } } catch (Exception ex) { throw new ApplicationException(String.Empty, ex); } }
/// <summary> /// TODO : Prévoir le mode multiple. /// Méthode statique de récéption des fichiers envoyés par le composant <code>CYS_UPLOAD</code>. /// </summary> /// <param name="_FILES">Liste des fichiers envoyés par le formulaire.</param> /// <param name="_TYPE"><code>CYS_STREAM_TYPE</code> correspondant au dossier cible dans le dossier de ressources de l'utilisateur.</param> /// <param name="_SESSION">Session de l'utilisateur courant.</param> /// <returns><code>CYS_STREAM</code> correspondant au flux du fichier reçu par le serveur.</returns> public static CYS_STREAM RECEIVE(HttpFileCollection _FILES, CYS_STREAM_TYPE _TYPE, HttpSessionState _SESSION) { CYS_STREAM _elem = null; try { int _id = Convert.ToInt32(_SESSION.GET_AND_DECRYPT(CYS_SESSION_TAGS.SESSION_LOGGED_S_IDCLIENT)); BUILD(_id); if (!Directory.Exists(HttpContext.Current.Server.MapPath(RESOURCES + GET_PATH_FROM_TYPE(_TYPE, _id)))) throw new Exception(); for (int i = 0; i < _FILES.Count; i++) { if (!GET_EXT_FROM_MIME(_FILES[i].ContentType).HasValue) continue; if (_FILES[i].ContentLength > MAX_FILE_SIZE) continue; if (!FILE_RIGHTS.Any(x => ((x.Key.Equals(_TYPE)) && (x.Value.Contains(GET_EXT_FROM_MIME(_FILES[i].ContentType).Value))))) continue; _elem = new CYS_STREAM(_FILES[i].InputStream, GET_EXT_FROM_MIME(_FILES[i].ContentType).Value, _TYPE, _SESSION); } return _elem; } catch (Exception ex) { throw new ApplicationException(String.Empty, ex); } }