Example #1
0
        /// <summary>
        /// Загрузчик файлов
        /// </summary>
        /// <param name="FileByte">Массив byte файла</param>
        /// <param name="NameFile">Название файла</param>
        /// <returns>Информация о загруженном файле</returns>
        public static InfoFile UploadHendler(byte[] FileByte, string NameFile)
        {
            DatKeys  keys     = GetKeysData();
            InfoFile infoFile = new InfoFile();
            Dictionary <string, object> keyValuePairs = new Dictionary <string, object>(0)
            {
                { Setting.Search__sessionid, keys._sessionid },
                { Setting.Search_cTracker, keys.cTracke },
                { Setting.Search_maxChunkSize, keys.maxChunkSize },
                { Setting.Search_fileFolder, keys.fileFolder },
                { "files[]", new FormUpload.FileParameter(FileByte, NameFile + ".txt", "application/octet-stream") }
            };
            var    Resul = FormUpload.MultipartFormDataPost(keys.Url, Setting.UserAgent, keyValuePairs);
            string StrRes;

            using (StreamReader stream = new StreamReader(Resul.GetResponseStream(), Encoding.GetEncoding(Resul.CharacterSet)))
            {
                StrRes = System.Text.RegularExpressions.Regex.Unescape(stream.ReadToEnd());
            }
            infoFile.delete_url = ParsJson(StrRes, "delete_url");
            infoFile.error      = ParsJson(StrRes, "error");
            infoFile.info_url   = ParsJson(StrRes, "info_url");
            infoFile.name       = ParsJson(StrRes, "name");
            if (infoFile.name.Contains('.'))
            {
                infoFile.name = infoFile.name != null?infoFile.name.Substring(0, infoFile.name.LastIndexOf('.')) : infoFile.name;
            }
            infoFile.size      = ParsJson(StrRes, "size");
            infoFile.stats_url = ParsJson(StrRes, "stats_url");
            infoFile.url       = ParsJson(StrRes, "url");
            return(infoFile);
        }
Example #2
0
        /// <summary>
        /// Получение одноразовых ключей для загрузки файла
        /// </summary>
        /// <returns>Набор ключей</returns>
        private static DatKeys GetKeysData()
        {
            // Получения HTml главной станицы загрузки
            string Html = (new WebClient()).DownloadString(Setting.UrlHomePage); DatKeys datKeys = new DatKeys();
            // Поиск переменных
            // Поиск ссылки
            string Resul = Html.Remove(0, Html.IndexOf(Setting.Search_Script));

            Resul       = Resul.Remove(Resul.IndexOf('\''), Resul.Length - Resul.IndexOf('\''));
            datKeys.Url = Resul;
            // Поиск название папки (обычно он null)
            Resul = Html.Remove(0, Html.IndexOf(Setting.Search_fileFolder));
            datKeys.fileFolder = Resul.Substring(Resul.IndexOf('\'') + 1, Resul.Remove(0, Resul.IndexOf('\'') + 1).IndexOf('\''));
            // Поиск maxChunkSize (хз для чего он)
            Resul = Html.Remove(0, Html.IndexOf(Setting.Search_browserXHR2Support));
            Resul = Resul.Remove(0, Resul.IndexOf(Setting.Search_maxChunkSize));
            Resul = Resul.Substring(Resul.IndexOf('=') + 1, Resul.IndexOf(';') - (Resul.IndexOf('=') + 1));
            datKeys.maxChunkSize = Convert.ToUInt32(Resul);
            // Поиск _sessionid (какой то личный индификатор "сессии")
            Resul = Html.Remove(0, Html.IndexOf(Setting.Search__sessionid));
            datKeys._sessionid = Resul.Substring(Resul.IndexOf('\'') + 1, Resul.Remove(0, Resul.IndexOf('\'') + 1).IndexOf('\''));
            // Поиск cTracke (какой то ещё один ключ)
            Resul           = Html.Remove(0, Html.IndexOf(Setting.Search_cTracker));
            datKeys.cTracke = Resul.Substring(Resul.IndexOf('\'') + 1, Resul.Remove(0, Resul.IndexOf('\'') + 1).IndexOf('\''));
            return(datKeys);
        }