С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102

Проверить существует ли файл на хостинге, если нет - показать сообщение

09.03.2019, 18:34. Показов 2332. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Вопрос в заголовке темы, буду очень очень благодарен за помощь.
Код для dll библиотеки. Он должен работать при вызове
C++
1
int main() {}
метода

Примерно так я представляю этот код, но не знаю как правильно сделать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main() {
 
if url("сайт/файл")
{
 
}
else
{
messagebox("файла нету")
}
 
}
Добавлено через 10 минут
Очень нужно сделать, с меня лучший выбор ответа и плюсик

Добавлено через 1 час 4 минуты
Знает кто?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2019, 18:34
Ответы с готовыми решениями:

Если файл не существует, показать OpenFileDialog для его самостоятельного выбора
Здравствуйте. Нужно чтобы при загрузке программы проверялся путь к БД, если такого нет то открыть OpenFileDialog(чтобы пользователь...

Добавить если не существует, показать если существует (SQL-запрос)
Мир всем и привет Как задать sql запрос в adoquery на существование записи: "если есть показать, если нет добавлять". База у...

Как проверить существует ли некое правило? Если нет, то добавить его
ДОбрый вечер. У меня создаются правила с помощью assert() И каждый раз программа создает одни и те же правила. Как сделать так, чтобы...

16
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
09.03.2019, 19:05
Zero4, здравствуйте! По своему опыту могу сказать (тестировал на своем собственном сайте, когда делал регистрацию для demo-версии программы), пытался изменить файл, записать туда что-то через WebClient (C#), ничего кроме как прочитать текстовый файл не получилось. Понимайте, это зависит от того разрешает ли хостинг чтение со сторонних приложений, так как MS Visual Studio, к примеру. Возможно, можно проверить его существование, но нужно рыть интернет. Кто-то, наверняка, знает.
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
09.03.2019, 19:18
Используйте CurlLib:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool check_url(std::string url)
{
    CURL *curl;
    CURLcode response;
 
    curl = curl_easy_init();
 
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
 
        /* don't write output to stdout */
        curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
 
        /* Perform the request */
        response = curl_easy_perform(curl);
 
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
 
    return (response == CURLE_OK);
}
1
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102
09.03.2019, 19:24  [ТС]
Цитата Сообщение от Меорн Посмотреть сообщение
Используйте CurlLib:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool check_url(std::string url)
{
    CURL *curl;
    CURLcode response;
 
    curl = curl_easy_init();
 
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
 
        /* don't write output to stdout */
        curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
 
        /* Perform the request */
        response = curl_easy_perform(curl);
 
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
 
    return (response == CURLE_OK);
}
можно подробнее?
как мне этим пользоваться?
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
09.03.2019, 19:28
Цитата Сообщение от Zero4 Посмотреть сообщение
Проверить существует ли файл на хостинге, если нет - показать сообщение
Как то расплывчиво описана задача.
Если понимать вопрос прямо и без додумываний то:
1) файл вообще может быть выше от document root, и туда по http вы не достучитесь (файл как бы есть, но проверить это не имеете право)
2) если http сервер отдает контент по адресу например site.tld/index.html, то это еще не значит что такой файл есть
вполне возможно что запрос перехватил фронт контроллер и отдал запрограммированный контент

но если надо просто проверить url на доступность
то скорее всего подойдет проверка статус кода ответа сервера
например 200 ОК - значит все норм
тут подойдет обычный HTTP клиент
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
09.03.2019, 19:28
Подключить curllib и все. В url - указываете путь к файлу без протокола, то есть к примеру: "www.cyberforum.ru/customavatars/avatar817433_1.gif"
0
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102
09.03.2019, 19:30  [ТС]
Цитата Сообщение от Меорн Посмотреть сообщение
Подключить curllib и все. В url - указываете путь к файлу без протокола, то есть к примеру: "www.cyberforum.ru/customavatars/avatar817433_1.gif"
а где мне взять эту библиотеку?
есть репозиторий какой?
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
09.03.2019, 19:33
Цитата Сообщение от Zero4 Посмотреть сообщение
а где мне взять эту библиотеку?
есть репозиторий какой?
https://curl.haxx.se/libcurl
0
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102
09.03.2019, 19:39  [ТС]
Цитата Сообщение от Меорн Посмотреть сообщение
это .dll или .lib?
я не нашёл готовые бинарники, есть только сорцы на гитхабе.
0
110 / 85 / 55
Регистрация: 01.02.2014
Сообщений: 281
09.03.2019, 19:45
Да. Нужно собирать.
Там в сырцах есть папка projects в ней проекты для MSVS готовые.
Компилировать проект libcurl.
Конфигурацию нужно выбирать LIB Debug или LIB Release.
После компиляции библиотека будет лежать в папке build.
В своей программе еще нужно не забыть указать флаг для
препроцессора CURL_STATICLIB.

Если нужно,могу выложить готовый проект с библиотекой,
для MSVS 2017. Сможете сразу попробовать работает такой метод или нет.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
09.03.2019, 20:00
Цитата Сообщение от Zero4 Посмотреть сообщение
Вопрос в заголовке темы, буду очень очень благодарен за помощь.
Попробуйте скачать файл через URLDownloadToFile. Вернуло S_OK, значит файл скачался и, очевидно, присутствует.
0
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102
09.03.2019, 20:18  [ТС]
Цитата Сообщение от Renji Посмотреть сообщение
Попробуйте скачать файл через URLDownloadToFile. Вернуло S_OK, значит файл скачался и, очевидно, присутствует.
Пробовал, ничего не происходит.
Консоль мгновенно закрывается.
Если через pause, так же ничего.
0
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102
11.03.2019, 15:46  [ТС]
Тема актуальна, так и не получилось сделать проверку.
Мне не обязательно проверять на существование файла.
Можно и просто проверить текст в txt файле на хостинге, например там 1, а в программе 2, и выдать ошибку.

Добавлено через 3 часа 24 минуты
up!
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
11.03.2019, 16:54
Лучший ответ Сообщение было отмечено Zero4 как решение

Решение

Цитата Сообщение от Zero4 Посмотреть сообщение
Тема актуальна, так и не получилось сделать проверку.
Ну, показывайте что у вас там с URLDownloadToFile не получилось. Ибо вбил в онлайн-компилятор - УМВР.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <urlmon.h>
#include<iostream>
#pragma comment (lib, "urlmon.lib")
using namespace std;
 
int main()
{
    auto res=URLDownloadToFile( 0, TEXT("http://ya.ru"), TEXT("test.html"), 0, 0);
    std::cout<<(res==S_OK?"OK":"error")<<std::endl;
    return 0;
}
2
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102
11.03.2019, 22:50  [ТС]
Цитата Сообщение от Renji Посмотреть сообщение
Ну, показывайте что у вас там с URLDownloadToFile не получилось. Ибо вбил в онлайн-компилятор - УМВР.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <urlmon.h>
#include<iostream>
#pragma comment (lib, "urlmon.lib")
using namespace std;
 
int main()
{
    auto res=URLDownloadToFile( 0, TEXT("http://ya.ru"), TEXT("test.html"), 0, 0);
    std::cout<<(res==S_OK?"OK":"error")<<std::endl;
    return 0;
}
вот, теперь работает
сильно код я не менял

если кому надо
C++
1
2
3
4
5
6
7
8
9
auto res=URLDownloadToFile( 0, TEXT("http://ya.ru"), TEXT("test.html"), 0, 0);
if (res == S_OK)
    {
        MessageBoxA(0, 0, "yes", 0);
    }
    else
    {
        MessageBoxA(0, 0, "no", 0);
    }

а вообще работать с http request и другими запросами на си это задача сложная, т.к язык низкоуровневый.

Добавлено через 12 минут
Цитата Сообщение от Renji Посмотреть сообщение
Ну, показывайте что у вас там с URLDownloadToFile не получилось. Ибо вбил в онлайн-компилятор - УМВР.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <urlmon.h>
#include<iostream>
#pragma comment (lib, "urlmon.lib")
using namespace std;
 
int main()
{
    auto res=URLDownloadToFile( 0, TEXT("http://ya.ru"), TEXT("test.html"), 0, 0);
    std::cout<<(res==S_OK?"OK":"error")<<std::endl;
    return 0;
}

подскажите еще кое что

как сделать вызов из main dll?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
BOOL WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID)
{
 
    if (dwReason == DLL_PROCESS_ATTACH)
    {
 
        auto res = URLDownloadToFile(0, TEXT(""), TEXT(""), 0, 0);
    if (res == S_OK)
    {
        MessageBoxA(0, 0, "yes", 0);
        
    }
    else
    {
        MessageBoxA(0, 0, "no", 0);
    }
        
 
 
    }
    return TRUE;
}
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
11.03.2019, 23:01
Цитата Сообщение от Zero4 Посмотреть сообщение
как сделать вызов из main dll?
Заменить пустые кавычки нужным адресом? А вообще, MSDN честно пишет что большая часть кода в DllMain либо не работает, либо работает криво и в идеале DllMain должен быть пуст. Так что если что в DllMain крашится, значит выносите это что-то в отдельную функцию инициализации и вызывайте ее ручками.
0
1 / 1 / 0
Регистрация: 28.10.2018
Сообщений: 102
11.03.2019, 23:04  [ТС]
Цитата Сообщение от Renji Посмотреть сообщение
Заменить пустые кавычки нужным адресом? А вообще, MSDN честно пишет что большая часть кода в DllMain либо не работает, либо работает криво и в идеале DllMain должен быть пуст. Так что если что в DllMain крашится, значит выносите это что-то в отдельную функцию инициализации и вызывайте ее ручками.
все работает, я сразу просто не указал return 0;
спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2019, 23:04
Помогаю со студенческими работами здесь

Если файл существует то при открытии должен прочитать оттуда имя и очки и показать 5 лучших
что я неправильно пишу - или можно так, хоть что то правильно :) ? ? код если можно ..... string str; ...

Циклом проверить файл и если он существует увеличить счетчик
for (z = 0; z &lt; count; z++) { while (q &lt; count) { FbConnection...

Как сделать так, что если файл существует return true, если нет - return false
Здравствуйте, я новичок в программировании. Мой вопрос очень прост: как сделать так, что если файл существует return true если нет return...

Как узнать сколько файлов в каталоге, и проверить, существует такой файл, или нет?
подскажите пожалуйста, как узнать сколько файлов в коталоге , и как проверить существует такой файл, или нет?

Открыть двоичный файл, если он не существует создать его, если существует, то дописать в него
Всем здравствуйте. Открыть двоичный файл, если он не существует создать его, если существует перезаписать его новыми данными: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru