Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
7 / 7 / 2
Регистрация: 26.12.2011
Сообщений: 269

Не работает POST передача файла. Непонятки с TCHAR

14.03.2014, 14:14. Показов 1062. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код программы, которой я пытаюсь загрузить текстовый файл(для примера) на сервер. Но почему-то это никак не работает. Пробовал словить неткатом пакет, вот что получилось:
listening on [any] 80 ...
connect to [127.0.0.1] from validation.sls.microsoft.com [127.0.0.1] 59157
POST /upload/upload.php HTTP/1.1
Content-Type: multipart/form-data; boundary=---------------------------7d82751e2
bc0858
User-Agent: MyAgent
Host: 127.0.0.1
Content-Length: 210
Cache-Control: no-cache
Cookie: s_pers=%20s_fid%3D6D463DCA024AF939-1C2604BDB2B68135%7C1457266833122%3B%2
0s_vs%3D1%7C1394110233124%3B%20s_nr%3D13 94108433125-Repeat%7C1425644433125%3B

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 d 8 2 7 5 1 e 2 b c
8 5 8
C o n t e n t - D i s p o s i t i o n : f o r m - d a t a ; n a m e = " f i
l e " ; f i l e n a m e = " C : \ t

То есть отослалась половина массива TCHAR frmdata. Я попробовал изменить код таким образом:

C++
1
2
 
 BOOL sent= HttpSendRequest(hRequest, hdrs, wcslen(hdrs), frmdata, wcslen(frmdata)*sizeof(TCHAR));
В этом случае frmdata в неткате полностью отобразился, но на сервер файл не загружается все равно. И очень странно, что строка отображается с пробелами между символами. Насколько я понял TCHAR занимает два байта и проблема как-то с этим связана. Только я не совсем понимаю в чем именно она заключается и как ее решить. Буду рад любой помощи.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include <windows.h>
#include <wininet.h>
#include <tchar.h>
#include <iostream>
 
#pragma comment(lib,"wininet.lib")
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    static TCHAR frmdata[] = _T("-----------------------------7d82751e2bc0858\r\nContent-Disposition: form-data; name=\"file\"; filename=\"C:\\test.txt\"\r\nContent-Type: text/plain\r\n\r\nAAAAAAAAAAAAAAAAA\r\n-----------------------------7d82751e2bc0858--\r\n");
    static TCHAR hdrs[] = L"Content-Type: multipart/form-data; boundary=---------------------------7d82751e2bc0858"; 
 
    HINTERNET hSession = InternetOpen(L"MyAgent",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
     if(hSession==NULL)
    {
     cout<<"Error: InternetOpen";  
     system("PAUSE");
    }
 
 
    HINTERNET hConnect = InternetConnect(hSession, L"127.0.0.1",INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
     if(hConnect==NULL)
    {
     cout<<"Error: InternetConnect";  
     system("PAUSE");
    }
 
    HINTERNET hRequest = HttpOpenRequest(hConnect, L"POST",L"/upload/upload.php", NULL, NULL, NULL, 0, 1);
    if(hRequest==NULL)
    {
     cout<<"Error: HttpOpenRequest";  
     system("PAUSE");
    }
 
    BOOL sent= HttpSendRequest(hRequest, hdrs, wcslen(hdrs), frmdata, wcslen(frmdata));
    if(!sent)
    {
        
     cout<<"Error: HttpSendRequest";
     system("PAUSE");
     }
 
    //close any valid internet-handles
    InternetCloseHandle(hSession);
    InternetCloseHandle(hConnect);
    InternetCloseHandle(hRequest);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2014, 14:14
Ответы с готовыми решениями:

Передача POST данных не работает в Делфи хе5
Здравствуйте! Подскажите пожалуйста, я для передачи POST через webbrowser пользуюсь следующей процедурой: procedure...

Передача файла на сервер методом POST
Потолок: .Net 4.0 Идея: передать файл методом POST на сервер скрипту. Что есть: public string ZAGPyZKA_FAiLA(string FAiL,...

Непонятки при выоде методом POST
Пытаюсь создать скрипт для закачки информации на сайт из 1С на компьютере. В протоколе, регламентирующем обмен, есть такой пункт: ...

3
53 / 39 / 3
Регистрация: 22.02.2014
Сообщений: 90
14.03.2014, 14:31
Посмотрите для примера - https://github.com/mattn/Gyazo... azoCmd.cxx
0
7 / 7 / 2
Регистрация: 26.12.2011
Сообщений: 269
14.03.2014, 14:48  [ТС]
Да, спасибо, но у вас там другой способ, через стримы. Мне интересно почему у меня не получается, при том если frmdata[] объявить как char, то все работает и отсылается. А с TCHAR почему-то нет. Вот я пытаюсь понять почему, но никак не могу разобраться.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.03.2014, 17:29
Цитата Сообщение от young_snake Посмотреть сообщение
А с TCHAR почему-то нет.
А почему должен? Какого TCHAR пихать в заголовки ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2014, 17:29
Помогаю со студенческими работами здесь

Передача массива через POST и подгрузка файла через AJAX
Доброго времени суток. Задача такого : есть элемент select в котором можно выбрать несколько вариантов. Далее по нажатию на кнопку, должен...

Не работает передача файла по сети
Есть сервер: package serverpack; import java.net.*; import java.io.*; public class Server { ServerSocket ss; Socket socket; ...

POST передача
Проблема собственно в следующем: Есть набор чекбоксов которые вытаскиваются с базы циклом do/while. Чекбоксы - это список товаров....

post передача в php
Пытаюсь передать в PHP содержимое textarea-полей. Меродом POST, конечно const FLD = new Array ( 'AboutMe', 'MyInteres', 'MyAstroP' );...

Передача GET и POST параметр
Доброго времени суток. Помогите разобраться с передачей параметра &lt;script language=&quot;javascript&quot;&gt; $(function() { ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru