0 down vote favorite
share [fb] share [tw] share [in]

i am working on a tiny tiny app that just uploads a file to the ftp server, i have reviewed my code but am quite unable to locate the problem, here is the code,

#include "stdafx.h"

using namespace System;

#include "iostream"
#include <conio.h>

using namespace System;

void UploadFiles(String ^_FileName, String ^_UploadPath, String ^_FTPUser, String ^_FTPPass);

int main ()

// Upload file using FTP
UploadFiles("c:\\test.html", "ftp://example.com/public_html/test.html", "xxxx", "xxxx");
return 0;


void UploadFiles(System::String ^_FileName, System::String ^_UploadPath, System::String ^_FTPUser, System::String ^_FTPPass)
    System::IO::FileInfo ^_FileInfo = gcnew System::IO::FileInfo(_FileName);

    // Create FtpWebRequest object from the Uri provided
    System::Net::FtpWebRequest ^_FtpWebRequest = safe_cast<System::Net::FtpWebRequest^>(System::Net::FtpWebRequest::Create(gcnew Uri(_UploadPath)));

    // Provide the WebPermission Credintials
    _FtpWebRequest->Credentials = gcnew System::Net::NetworkCredential(_FTPUser, _FTPPass);

    // By default KeepAlive is true, where the control connection is not closed
    // after a command is executed.
    _FtpWebRequest->KeepAlive = false;

    // set timeout for 20 seconds
    _FtpWebRequest->Timeout = 20000;

    // Specify the command to be executed.

    _FtpWebRequest->Method =System::Net::WebRequestMethods::Ftp.UploadFile;

    // Specify the data transfer type.
    _FtpWebRequest->UseBinary = true;

    // Notify the server about the size of the uploaded file
    _FtpWebRequest->ContentLength = _FileInfo->Length;

    // The buffer size is set to 2kb
    int buffLength = 2048;
    array<System::Byte> ^buff = gcnew array<System::Byte>(buffLength);

    // Opens a file stream (System.IO.FileStream) to read the file to be uploaded
    System::IO::FileStream ^_FileStream = _FileInfo->OpenRead();

        // Stream to which the file to be upload is written
        System::IO::Stream ^_Stream = _FtpWebRequest->GetRequestStream();

        // Read from the file stream 2kb at a time
        int contentLen = _FileStream->Read(buff, 0, buffLength);

        // Till Stream content ends
        while (contentLen != 0)
            // Write Content from the file stream to the FTP Upload Stream
            _Stream->Write(buff, 0, contentLen);
            contentLen = _FileStream->Read(buff, 0, buffLength);

        // Close the file stream and the Request Stream
        delete _Stream;
        delete _FileStream;
    catch (Exception ^ex)
        //MessageBox::Show(ex->Message, "Upload Error", MessageBoxButtons::OK, MessageBoxIcon::Error);



but im getting the following errors

Error 1 error C2275: 'System::Net::WebRequestMethods::Ftp' : illegal use of this type as an expression C:\Users\Me\documents\visual studio 2010\Projects\test1\test1\test1.cpp 70

Error 2 error C2228: left of '.UploadFile' must have class/struct/union C:\Users\Me\documents\visual studio 2010\Projects\test1\test1\test1.cpp 70

help please

Edited by Ezzaral: Edited server and user information.

5 Years
Discussion Span
Last Post by Moschops

No idea, especially since the line-numbering in the code you provided doesn't correspond to the line-number in the error messages. Perhaps replacing the '.' with another '::' would work?

_FtpWebRequest->Method = System::Net::WebRequestMethods::Ftp::UploadFile;

I see you've put the logon name and password for this ftp site into the public domain. I recommend you change the password and check to see what people have done in there over the past day; perhaps some kind moderator will do you a favour and edit your original post.

Edited by Moschops: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.