473,320 Members | 2,041 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

C++ client upload to PHP server

I'm having issues transferring a file from a WEB client running a C++ application to a PHP server script. I have debugged through the C++ side and no errors are reported, but the file does not appear on the server. My current environment is a Vista business system running IIS. I developed the C++ app using Microsoft's Visual Studio. I know the configuration is correct as the application does communicate with PHP scripts to transfer XML data back and forth. I cannot seem to get the file upload to work. I have attached both the C++ and PHP sides. Any assistance would be greatly appreciated.
C++ code
Expand|Select|Wrap|Line Numbers
  1. hFileXfer = InternetOpen("FileSession", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  2. if(hFileXfer != 0)
  3.     hConnect = InternetConnect(hFileXfer, "localhost", 80, "", "", INTERNET_SERVICE_HTTP, 0,0);
  4.     if(hConnect != 0)
  5.     {
  6.         DWORD flags;
  7.         flags = INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE;
  8.         hReq = HttpOpenRequest(hConnect,"POST", "./TargetDir/ClientUpload.php", NULL, NULL, NULL, flags, 0);
  9.         if(hReq != 0)
  10.         {
  11.             if(HttpSendRequestEx(hReq, NULL, NULL,0, NULL))
  12.             {
  13.                 do
  14.                 {
  15.                     if(bRead = (bool)ReadFile(hSrcFile,&pBuffer, sizeof(pBuffer), &dwBytesRead, NULL))
  16.                     {
  17.                         if(!(bRtn =(bool)InternetWriteFile(hReq, pBuffer, dwBytesRead, &dwBytesWritten)))
  18.                         {
  19.                             DWORD DwError = GetLastError();
  20.                             *ErrStr = "Unable to write file to server";
  21.                             break;
  22.                         }
  23.                         dwTotalWritten += dwBytesWritten;
  24.                     }
  25.                     else
  26.                     {
  27.                         DWORD DwError = GetLastError();
  28.                         *ErrStr = "Error reading source file";
  29.                         bRtn = false;
  30.                         break;
  31.                     }
  32.                 } while(dwTotalWritten < dwFileSize);
  33.                 CloseHandle(hSrcFile);
  34.                 TCHAR            RtnBuffer[1000];
  35.                 DWORD            ret;
  36.                 bRtn = InternetReadFile(hReq, RtnBuffer, 1000, &ret);
  37.                 InternetCloseHandle(hReq);
  38.                 InternetCloseHandle(hConnect);
  39.                 InternetCloseHandle(hFileXfer);
  40.             }
  41.         }
  42.     }
  43. }

PHP code
Expand|Select|Wrap|Line Numbers
  1. <?php
  2. $uploaddir = '/TargetDir/ClientUploads/';
  3. $uploadfile = $uploaddir . basename($_FILES['file']['name']);
  4.  
  5. echo '<pre>';
  6. if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
  7.     echo "File is valid, and was successfully uploaded.\n";
  8. } else {
  9.     echo "Possible file upload attack!\n";
  10. }
  11.  
  12. echo 'Here is some more debugging info:';
  13. print_r($_FILES);
  14.  
  15. print "</pre>";
  16.  
  17. ?>
Apr 21 '09 #1
7 3610
Markus
6,050 Expert 4TB
What output do you get? Any PHP errors?
Apr 21 '09 #2
Appears I get nothing from PHP side. I am not even sure it gets activated. I think I remember putting in some code on the PHP to write to an MySQL Db and nothing appeared, and it was the first thing I did
Apr 21 '09 #3
Markus
6,050 Expert 4TB
Unfortunately I am out of ideas for this :/
I know squat about C++.

Maybe someone else will be able to help.
Apr 21 '09 #4
UPDATE: I think I got the C++ side working. I can go through the code and no errors are reported. The PHP script gets executed but there is no file there
Expand|Select|Wrap|Line Numbers
  1. $connection = mysql_connect('localhost','root',''); // or die('Error: ' . mysql_error()); 
  2. if(!$connection)
  3.    $StatusStr = 'DatabaseError';
  4. else
  5. {
  6.    mysql_select_db("watchdog", $connection);
  7.    $sql = "INSERT INTO testTbl ( TestSeen) VALUES ( '1')";
  8.    $Result = mysql_query($sql);
  9. }
  10. $uploaddir = 'ClientUploads/';
  11. if(empty($_FILES["uploaded_file"]))
  12. {
  13.     $sql = "INSERT INTO testTbl ( TestSeen) VALUES ( 'EMPTY')";
  14.     $Result = mysql_query($sql);
  15. }
  16.  
In the table I see 1 followed by EMPTY
Apr 22 '09 #5
Markus
6,050 Expert 4TB
I'm not sure you're able to send a file like that and have PHP recognise it. Does C++ have access to a cURL library?
Apr 22 '09 #6
NOPE.
This should work.
I get no errors on the C++ side.
Apr 22 '09 #7
Markus
6,050 Expert 4TB
If there is no data in the FILES array, then your C++ application is not submitting the data correctly.
Apr 22 '09 #8

Sign in to post your reply or Sign up for a free account.

Similar topics

3
by: WM Chung | last post by:
Hello all, My dotnet application configuration is that the client, Web server and database all reside in 3 different computers. There is a function which can browse a file and read in the...
1
by: alfredfx | last post by:
i'm planning to develop a client server system the client and server both able to upload picture client will upload the picture to a folder that reside in the server while server user can also...
6
by: jake | last post by:
How do you get or save a file from/to a client (button on web page) once they are authenticated? The client could be Mac, Linux or Windows. Can I do it all with IIS and ASP.NET?
3
by: Rob Nicholson | last post by:
The following code added to Page_Load works a treat: Response.ContentType = "application/zip" Response.AppendHeader("Content-Disposition", "attachment; filename=DesktopChange.pdf")...
9
by: CGW | last post by:
I asked the question yesterday, but know better how to ask it, today: I'm trying to use the File.Copy method to copy a file from a client to server (.Net web app under IIS ). It looks to me that...
6
by: dinoo | last post by:
Hi, I would appreciate if some one could help me out. I have to read a client side ini file in Aspx page and use that data in server side processing. Can any one help me out here? Please refer...
10
by: Paul | last post by:
Hi I am using the HtmlInputFile control to upload a file from a client to a server. I have a browse to find the file on the server but need to create the path dynamically as to were it will go...
12
by: SAL | last post by:
Hello, Is it possible to read a CSV from the Client, and bind my Datagrid to the data in the CSV file without uploading the file to the Server first? I have tried and in Debug mode on my...
3
by: pbd22 | last post by:
Hi There. I think i need some software design help. I have a page, server.aspx, that starts uploading video files when it is loaded via hidden iframe by the client. On the same page is an...
1
by: SGilch | last post by:
I am new to javascript, and wondering if it is capable of implementing a browsing mechanism for the browser to upload the names of files in a client side directory to the server. The client would...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
0
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.