4

asp.net と c# でファイル アップローダーを作成しています。アップロードしたファイルをftpサーバーに直接保存したかっただけです。出来ますか?可能であれば、そのftpサーバー認証情報を設定するにはどうすればよいですか。

(127.0.0.1 は単なる例です。実際の IP を書き込めませんでした。また、HTTP プロトコルを使用してファイルを取得する必要があります。一部のクライアント ISP は ftp をサポートしていません。これが主な問題です。)

protected void submit_button_Click(object sender, EventArgs e)
    {
        string filename = Path.GetFileName(upload_file.FileName);
        string fileExt = Path.GetExtension(upload_file.FileName);

        if (fileExt == ".csv")
        {
            string folder = Server.MapPath("ftp://127.0.0.1/uploads/");
                upload_file.SaveAs(folder + "/" + filename);
                ltr.Text = "Successful.";
        }
        else
        {
            upload_file.BorderColor = System.Drawing.Color.Red;
            ltr.Text = "File type must be .csv.";
        }
    }
4

2 に答える 2

8

とてもシンプルです。以下のメソッドは、ファイル名を渡すだけです。明らかに、StreamReader のディレクトリを変更します。

編集: 申し訳ありませんが、クライアントが FTP をサポートしていないため、以下は機能しません。

public bool ftpTransfer(string fileName)
{
    try
    {
        string ftpAddress = "127.0.0.1";
        string username = "user";
        string password = "pass";

        using (StreamReader stream = new StreamReader("C:\\" + fileName))
        {
            byte[] buffer = Encoding.Default.GetBytes(stream.ReadToEnd());

            WebRequest request = WebRequest.Create("ftp://" + ftpAddress + "/" + "myfolder" + "/" + fileName);
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.Credentials = new NetworkCredential(username, password);
            Stream reqStream = request.GetRequestStream();
            reqStream.Write(buffer, 0, buffer.Length);
            reqStream.Close();
        }
        return true;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
        return false;
    }
}

編集:ファイル名を作り直しました。

于 2013-04-30T09:34:05.000 に答える
0
string filepath = "~/txtfile/";//this is folder name wher you want to save the file


                HttpFileCollection uploadedFiles = HttpContext.Current.Request.Files;
                for (int i = 0; i < uploadedFiles.Count; i++)
                {
                    HttpPostedFile userPostedFile = uploadedFiles[i];
                    if (userPostedFile.ContentLength == 0)
                    {
                        continue;

}



    userPostedFile.SaveAs(Server.MapPath(filepath) + userPostedFile.filename);
} //save file on the server             
于 2013-04-30T09:58:08.693 に答える