2011-09-10 18 views
-7

私はFTPサーバーにファイルをアップロードする小さなアプリケーションを開発中です。コードを見直しましたが、問題を特定できません。 'System::Net::WebRequestMethods::Ftp':式Cとして、この種の不正使用:ここでのコードは、それは、Visual Cでの2つのエラー++ 2010 Expressの、FTPサーバーへのアップロード

エラー1つのエラーC2275与え、

#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://playbabe.tk/public_html/test.html", "xxxxxx", "xxxxxx"); 
    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(); 

    try 
    { 
     // 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 
     _Stream->Close(); 
     delete _Stream; 
     _FileStream->Close(); 
     delete _FileStream; 
    } 
    catch (Exception ^ex) 
    { 
     //MessageBox::Show(ex->Message, "Upload Error", MessageBoxButtons::OK, MessageBoxIcon::Error); 
     std::cout<<"error"; 
    } 

    getch(); 
} 

あるユーザーが私を\ \を\ドキュメント\ Visual Studio 2010 \ Projects \ test1 \ test1 \ test1.cpp 70

エラー2エラーC2228:'.UploadFile'の左にクラス/構造体/共用体C:\ Users \ Me \ documents \ visual Studio 2010 \ Projects \が必要です。 test1 \ test1 \ test1.cpp 70

私はここで何がうまくいかないのか分かりません。

+0

とりわけ、インデント。 –

+1

これはC++コードではありません。 –

+0

よろしくお願いいたします。編集に感謝します。それは純粋にC++ではないが、私の大学では一般的にC++なので....(助けてください) –

答えて

0

私はC++/CLIを知らないが、次の文は確かに間違っている:

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

System::Net::WebRequestMethods::Ftpはタイプであると、エラーメッセージが示すように(あなたは私たちに行番号を与えている可能性が!)それを式として使用しようとしています。

静的メンバー関数へのポインタを取得しようとしていますか?

こうしてあなたは次のことを意味しましたか?

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

うん、それは働いた。どうもありがとう。質問が解決しました。大変感謝します。 –

+0

どのように私はそれを解決としてマークしますか? –

+0

@モハマド:ダニをクリックしてください。 –

関連する問題