Переименовать файл при получении. GET

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Есть GET запрос, который получает файл с расширением в зависимости от ситуации. Нужно при получении этого файла (на лету) переименовать его имя не меняя расширения. т.е. переименовать его до того как он сохраниться на диск. Как?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

SHELBY

Client
Регистрация
09.09.2016
Сообщения
237
Благодарностей
291
Баллы
63
При получении хз как...

Можно так
C#:
var req = ZennoPoster.HttpGet(
        "http://www.mobilmusic.ru/mfile/0d/4b/be/715326.jpg", // адрес картинки
        "", // прокси если нужно
        "UTF-8", // кодировка
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File, // тип файл
        30000, // ждем ответ от сервера
        "", //куки если нужно
        "", //юзерагент если нужно
        true, // использовать редирект
        3, // количество редиректов
        new String[]{}, // заголовки если нужно
         @"C:\", // куда сохранить файл
        true // использовать оригинальный УРЛ
    );

File.Move(req, @"C:\ИМЯФАЙЛА.jpg");
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
зенновским гетом никак
Я забыл указать что пробую снипетом.
@zts - спасибо, попробую но по моему не совсем то т.к. перед этим:
Код:
File.Move(req, @"C:\ИМЯФАЙЛА.jpg");
если я правильно получаю файл будет уже скачан на диск.
 

SHELBY

Client
Регистрация
09.09.2016
Сообщения
237
Благодарностей
291
Баллы
63
@zts - спасибо, попробую но по моему не совсем то т.к. перед этим:
Все верно, это не совсем то, как вы указали. Сначала скачается файл с оригинальным именем, а потом произойдет переименование в нужный. Это займет менее секунды.
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Я хочу избавиться от проблемы в многопотоке когда перетираются скаченные файлы потоками. Иногда такое бывает. Для этого нужно сохранять файл для каждого потока со своим уникальным именем. А вот как это сделать, пока не совсем понятно.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
я уже миллион раз писал здесь, уверен, и тебе когда-то писал. СОЗДАЁШЬ УНИКАЛЬНУЮ ПАПКУ. Скачиваешь туда файл.
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Да, про это ты говорил, но правда под другую задачу. Для данной задачи данное решение подойдет тоже . Пошел читать вики, как сменить путь для скачки.

Сердечно благодарю Док! :-)
 

S16er1um

Client
Регистрация
14.04.2016
Сообщения
826
Благодарностей
240
Баллы
43
Да, про это ты говорил, но правда под другую задачу. Для данной задачи данное решение подойдет тоже . Пошел читать вики, как сменить путь для скачки.

Сердечно благодарю Док! :-)
а разве этот экшен не подходит?
upload_2017-8-23_13-11-46.png
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Думаю подходит. Освобожусь, попробую и его.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
я уже миллион раз писал здесь, уверен, и тебе когда-то писал. СОЗДАЁШЬ УНИКАЛЬНУЮ ПАПКУ. Скачиваешь туда файл.
Попробовал, в один поток в PM все ок а вот в ZP во много потоке, не удаляются ненужные папки. Экшен удалить папку стоит во всех нужных местах. В лог ошибок никаких не падает. Причину пока никак не могу отловить. То ли шаблон где то спотыкается то ли быстро отрабатывает. Какие мысли будут у уважаемой публике?
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
На сервере что в PM что в ZP папки созданные экшеном Папка для загрузки файлов не удаляются стандартным экшеном. Мистика! Локально все ок.
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
@zts
Сначала пойми задачу, а потом дергай куски кода с соседних тем :-)

@one
Папка для загрузки файлов не удаляются стандартным экшеном
Потому что каждый поток работая с папками блокирует их на изменение и запись до полного завершения потока. Я не пользуюсь этими экшенами при работе с файловой системой с момента знакомства с зенкой ;-)

для решения твоей задачи идеально подходит такой код:
C#:
//в директивы Using нужно добавить строчку ниже
// using System.Net;

WebClient c = new WebClient(); //создаем стандартный шарповский веб клиент

c.DownloadFile( // используем стандартный шарповский метод для скачивания фала с указанием имени
    "http://www.mobilmusic.ru/mfile/0d/4b/be/715326.jpg", //говорим что качаем
    @"e:\asdasd.jpg" // говорим как называем скаченый фаил на диске, ну естественно и путь прописываем куда его сохранить
);

//Внимание!!! нужно четко следить за расширением исходного файла (который качаешь)
// и расширением конечного файла они должны совпадать.
 
  • Спасибо
Реакции: dobrohod, specialist и one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Да, в многопотоке чехорда начинается. С решением от Дока вроде бы все нормализовалась. Но буду пробовать и Ваше решение.
  • //Внимание!!! нужно четко следить за расширением исходного файла (который качаешь)
// и расширением конечного файла они должны совпадать.
А если расширение загружаемого файла заранее не известно?
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
ну ты проверяй что в конце урл у тебя идет, и подставляй соответствующее расширение
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
ну ты проверяй что в конце урл у тебя идет, и подставляй соответствующее расширение
Если бы все так просто было. URL динамически и что отдаст заранее не известно. Файл генерируется на стороне сервера в момент GET запроса.
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
На сервере что в PM что в ZP папки созданные экшеном Папка для загрузки файлов не удаляются стандартным экшеном
Сталкивался с невозможностью удаления папок, созданными экшеном Папка для загрузки файлов.
Попробуй создавать папку перед загрузкой туда файла
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Проблему с удалением решил таким сниппетом:

Код:
var file = project.Directory +"\\downloaded-files\\"+project.Variables["CUSTOM_FOLDER_NAME"].Value;
bool recursive = true;
bool startupPath = false;
FileSystem.DirectoryDeleteDirectory(file, recursive, startupPath);
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Проблему с удалением решил таким сниппетом:
А вот и фиг тут был. Проблема с удалением папки\файла по прежнему присутствует не смотря на то, что как советовал Док имя папки куда складывается скачиваемый файл у каждого потока уникальная.

upload_2017-9-5_21-20-43.png
 

Sobesednic

Client
Регистрация
24.12.2012
Сообщения
391
Благодарностей
77
Баллы
28
работает стандартный экшен удаление папки - версия 5.11.3.0
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)