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

  • Автор темы Автор темы one
  • Дата начала Дата начала

one

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

Можно так
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
зенновским гетом никак
Я забыл указать что пробую снипетом.
@zts - спасибо, попробую но по моему не совсем то т.к. перед этим:
Код:
Развернуть Свернуть Копировать
File.Move(req, @"C:\ИМЯФАЙЛА.jpg");
если я правильно получаю файл будет уже скачан на диск.
 
@zts - спасибо, попробую но по моему не совсем то т.к. перед этим:
Все верно, это не совсем то, как вы указали. Сначала скачается файл с оригинальным именем, а потом произойдет переименование в нужный. Это займет менее секунды.
 
  • Оценить
Реакции: one
Я хочу избавиться от проблемы в многопотоке когда перетираются скаченные файлы потоками. Иногда такое бывает. Для этого нужно сохранять файл для каждого потока со своим уникальным именем. А вот как это сделать, пока не совсем понятно.
 
я уже миллион раз писал здесь, уверен, и тебе когда-то писал. СОЗДАЁШЬ УНИКАЛЬНУЮ ПАПКУ. Скачиваешь туда файл.
 
  • Оценить
Реакции: one
Да, про это ты говорил, но правда под другую задачу. Для данной задачи данное решение подойдет тоже . Пошел читать вики, как сменить путь для скачки.

Сердечно благодарю Док! :)
 
Да, про это ты говорил, но правда под другую задачу. Для данной задачи данное решение подойдет тоже . Пошел читать вики, как сменить путь для скачки.

Сердечно благодарю Док! :-)
а разве этот экшен не подходит?
upload_2017-8-23_13-11-46.png
 
Думаю подходит. Освобожусь, попробую и его.
 
я уже миллион раз писал здесь, уверен, и тебе когда-то писал. СОЗДАЁШЬ УНИКАЛЬНУЮ ПАПКУ. Скачиваешь туда файл.
Попробовал, в один поток в PM все ок а вот в ZP во много потоке, не удаляются ненужные папки. Экшен удалить папку стоит во всех нужных местах. В лог ошибок никаких не падает. Причину пока никак не могу отловить. То ли шаблон где то спотыкается то ли быстро отрабатывает. Какие мысли будут у уважаемой публике?
 
На сервере что в PM что в ZP папки созданные экшеном Папка для загрузки файлов не удаляются стандартным экшеном. Мистика! Локально все ок.
 
@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
Да, в многопотоке чехорда начинается. С решением от Дока вроде бы все нормализовалась. Но буду пробовать и Ваше решение.
  • //Внимание!!! нужно четко следить за расширением исходного файла (который качаешь)
// и расширением конечного файла они должны совпадать.
А если расширение загружаемого файла заранее не известно?
 
ну ты проверяй что в конце урл у тебя идет, и подставляй соответствующее расширение
Если бы все так просто было. URL динамически и что отдаст заранее не известно. Файл генерируется на стороне сервера в момент GET запроса.
 
На сервере что в PM что в ZP папки созданные экшеном Папка для загрузки файлов не удаляются стандартным экшеном
Сталкивался с невозможностью удаления папок, созданными экшеном Папка для загрузки файлов.
Попробуй создавать папку перед загрузкой туда файла
 
Проблему с удалением решил таким сниппетом:

Код:
Развернуть Свернуть Копировать
var file = project.Directory +"\\downloaded-files\\"+project.Variables["CUSTOM_FOLDER_NAME"].Value;
bool recursive = true;
bool startupPath = false;
FileSystem.DirectoryDeleteDirectory(file, recursive, startupPath);
 
Проблему с удалением решил таким сниппетом:
А вот и фиг тут был. Проблема с удалением папки\файла по прежнему присутствует не смотря на то, что как советовал Док имя папки куда складывается скачиваемый файл у каждого потока уникальная.

upload_2017-9-5_21-20-43.png
 
работает стандартный экшен удаление папки - версия 5.11.3.0
 

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