/// <summary> /// Méthode statique de récupération des fichiers dans un dossier de ressources de l'utilisateur. /// </summary> /// <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>List[CYS_STREAM]</code> correspondant à la liste des flux de fichiers récupérés dans le dossier.</returns> public static List<CYS_STREAM> DIR(CYS_STREAM_TYPE _TYPE, HttpSessionState _SESSION) { List<CYS_STREAM> _list = new List<CYS_STREAM>(); 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(); foreach (var file in Directory.GetFiles(HttpContext.Current.Server.MapPath(RESOURCES + GET_PATH_FROM_TYPE(_TYPE, _id)))) { var _elem = FILE(file, _TYPE, _id); if (_elem == null) continue; _list.Add(_elem); } return _list; } catch (Exception ex) { throw new ApplicationException(String.Empty, ex); } }
/// <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); } }
/// <summary> /// /// </summary> /// <param name="_type"></param> /// <param name="_id"></param> /// <returns></returns> public static string GET_PATH_FROM_TYPE(CYS_STREAM_TYPE _type, int _id) { switch (_type) { case CYS_STREAM_TYPE.S_FILES_BASE: return _id + "/"; case CYS_STREAM_TYPE.S_FILES_CC: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "CC/"; case CYS_STREAM_TYPE.S_FILES_CE: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "CE/"; case CYS_STREAM_TYPE.S_FILES_CRS: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "CRS/"; case CYS_STREAM_TYPE.S_FILES_CRS_LOGO: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "CRS/LOGO/"; case CYS_STREAM_TYPE.S_FILES_CRS_FOND: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "CRS/FOND/"; case CYS_STREAM_TYPE.S_FILES_PA: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "PA/"; case CYS_STREAM_TYPE.S_FILES_PA_FOND: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "PA/FOND/"; case CYS_STREAM_TYPE.S_FILES_PA_LOGO: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "PA/LOGO/"; case CYS_STREAM_TYPE.S_FILES_PJ: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "PJ/"; case CYS_STREAM_TYPE.S_FILES_PJ_IMAGE: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "PJ/IMAGE/"; case CYS_STREAM_TYPE.S_FILES_PJ_PROTOCOLE: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "PJ/PROTOCOLE"; case CYS_STREAM_TYPE.S_FILES_PR: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "PR/"; case CYS_STREAM_TYPE.S_FILES_R0: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "R0/"; case CYS_STREAM_TYPE.S_FILES_R1: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "R1/"; case CYS_STREAM_TYPE.S_FILES_R2: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "R2/"; case CYS_STREAM_TYPE.S_FILES_R3: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "R3/"; case CYS_STREAM_TYPE.S_FILES_R3R: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "R3R/"; case CYS_STREAM_TYPE.S_FILES_R3RI: return GET_PATH_FROM_TYPE(CYS_STREAM_TYPE.S_FILES_BASE, _id) + "R3RI/"; default: return String.Empty; } }
/// <summary> /// Méthode réalisant un dossier de ressources dans l'arborescence de l'utilisateur, s'il n'éxiste pas. /// </summary> /// <param name="_type"><code>CYS_STREAM_TYPE</code> désignant le dossier à réaliser.</param> /// <param name="_id">Identifiant de l'utilisateur en base de données.</param> private static void BUILD_DIR(CYS_STREAM_TYPE _type, int _id) { if (!Directory.Exists(HttpContext.Current.Server.MapPath(RESOURCES + GET_PATH_FROM_TYPE(_type, _id)))) Directory.CreateDirectory(HttpContext.Current.Server.MapPath(RESOURCES + GET_PATH_FROM_TYPE(_type, _id))); }
public CYS_STREAM(Stream _STREAM, CYS_STREAM_EXT _EXTENSION, CYS_STREAM_TYPE _TYPE, HttpSessionState _SESSION) { try { ID = DateTime.Now.Ticks; STREAM = GET_BYTES(_STREAM); TYPE = _TYPE; MIME = GET_MIME_FROM_EXT(_EXTENSION); DIR_PATH = GET_PATH_FROM_TYPE(_TYPE, Convert.ToInt32(_SESSION.GET_AND_DECRYPT(CYS_SESSION_TAGS.SESSION_LOGGED_S_IDCLIENT))); NAME = ID.ToString(); EXTENSION = _EXTENSION; SAVED = false; CHOSEN = false; } catch (Exception ex) { throw new ApplicationException(String.Empty, ex); } }