PDA

View Full Version : سوال: چگونگی ارسال فایل به سرور وب



ali_shmki
چهارشنبه 03 آذر 1389, 23:06 عصر
سلام
من میخوام از طریق برنامه win App، یک فایل که روی سیستم کلاینت قرار داره رو به سرور وب منتقل کنم. به چیزی مثل برنامه cuteFtp.
لطفا راهنمایی کنید.

L u k e
پنج شنبه 04 آذر 1389, 11:36 صبح
اینم یه کلاس واسه این کار فکر کنم همه چیش واضح باشه



using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;


namespace Code
{
public class Ftp
{
FtpWebRequest FTP;

string _address;

public string Address
{
get { return _address; }
set { _address = value; }
}
public Ftp(string Address, string username, string password)
{
_address = Address;

}

public void CreateDirectory(string DirName)
{
Login(Address + "/" + DirName);
FTP.Method = WebRequestMethods.Ftp.MakeDirectory;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void RemoveDirectory(string DirName)
{
Login(Address + "/" + DirName);
FTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void CreateFile(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.AppendFile;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void UploadFile(string FileName, Stream stream)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.UploadFile;

Stream streamWriter = FTP.GetRequestStream();
byte[] Read = new byte[stream.Length];
stream.Read(Read, 0, Convert.ToInt32(stream.Length));
streamWriter.Write(Read, 0, Read.Length);
stream.Dispose();
streamWriter.Dispose();
}

public void UploadFileString(string FileName, string stream)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.UploadFile;

Stream streamWriter = FTP.GetRequestStream();
byte[] Read = new byte[stream.Length];

for (int i = 0; i < stream.Length; i++)
{
Read[i] = Convert.ToByte(stream[i]);
}
streamWriter.Write(Read, 0, Read.Length);
streamWriter.Dispose();
}



public Stream DownloadFile(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.DownloadFile;
return FTP.GetResponse().GetResponseStream();
}

public string[] ListFiles(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.ListDirectory;
WebResponse myres = FTP.GetResponse();
Stream stream = myres.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
List<string> RET = new List<string>();

while (!reader.EndOfStream)
{
RET.Add(reader.ReadLine());
}
myres.Close();
stream.Dispose();
return RET.ToArray();
}

public bool FileOrDirectoryExist(string FileName)
{
try
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.ListDirectory;
WebResponse myres = FTP.GetResponse();
Stream stream = myres.GetResponseStream();
stream.ReadByte();
myres.Close();
stream.Dispose();
return true;
}
catch (Exception)
{
// Debug here?
}
return false;
}

public string DownloadFileString(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.DownloadFile;
WebResponse myres = FTP.GetResponse();
Stream stream = myres.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string RET = reader.ReadToEnd();
myres.Close();
stream.Dispose();
return RET;
}

public void RemoveFile(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.DeleteFile;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void Login(string Address)
{
FTP = (FtpWebRequest)FtpWebRequest.Create(Address);
FTP.UseBinary = true;
FTP.Credentials = new NetworkCredential("lion@prohosting.ir", "123456");
}
}
}

nanosoftco
جمعه 21 مرداد 1390, 13:02 عصر
اینم یه کلاس واسه این کار فکر کنم همه چیش واضح باشه



using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;


namespace Code
{
public class Ftp
{
FtpWebRequest FTP;

string _address;

public string Address
{
get { return _address; }
set { _address = value; }
}
public Ftp(string Address, string username, string password)
{
_address = Address;

}

public void CreateDirectory(string DirName)
{
Login(Address + "/" + DirName);
FTP.Method = WebRequestMethods.Ftp.MakeDirectory;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void RemoveDirectory(string DirName)
{
Login(Address + "/" + DirName);
FTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void CreateFile(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.AppendFile;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void UploadFile(string FileName, Stream stream)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.UploadFile;

Stream streamWriter = FTP.GetRequestStream();
byte[] Read = new byte[stream.Length];
stream.Read(Read, 0, Convert.ToInt32(stream.Length));
streamWriter.Write(Read, 0, Read.Length);
stream.Dispose();
streamWriter.Dispose();
}

public void UploadFileString(string FileName, string stream)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.UploadFile;

Stream streamWriter = FTP.GetRequestStream();
byte[] Read = new byte[stream.Length];

for (int i = 0; i < stream.Length; i++)
{
Read[i] = Convert.ToByte(stream[i]);
}
streamWriter.Write(Read, 0, Read.Length);
streamWriter.Dispose();
}



public Stream DownloadFile(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.DownloadFile;
return FTP.GetResponse().GetResponseStream();
}

public string[] ListFiles(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.ListDirectory;
WebResponse myres = FTP.GetResponse();
Stream stream = myres.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
List<string> RET = new List<string>();

while (!reader.EndOfStream)
{
RET.Add(reader.ReadLine());
}
myres.Close();
stream.Dispose();
return RET.ToArray();
}

public bool FileOrDirectoryExist(string FileName)
{
try
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.ListDirectory;
WebResponse myres = FTP.GetResponse();
Stream stream = myres.GetResponseStream();
stream.ReadByte();
myres.Close();
stream.Dispose();
return true;
}
catch (Exception)
{
// Debug here?
}
return false;
}

public string DownloadFileString(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.DownloadFile;
WebResponse myres = FTP.GetResponse();
Stream stream = myres.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string RET = reader.ReadToEnd();
myres.Close();
stream.Dispose();
return RET;
}

public void RemoveFile(string FileName)
{
Login(Address + "/" + FileName);
FTP.Method = WebRequestMethods.Ftp.DeleteFile;
((FtpWebResponse)FTP.GetResponse()).Close();
}

public void Login(string Address)
{
FTP = (FtpWebRequest)FtpWebRequest.Create(Address);
FTP.UseBinary = true;



FTP.Credentials = new NetworkCredential("lion@prohosting.ir", "123456");
}
}
}


میشه توضیحی در مورد کار کردنش هم بدین کم امتحانش کردم ولی هنگام لاگین شدن و ... ایراد میده

مقادیر رو من اینجوری تعریف میکنم ببینید :

FTP.Credentials = new NetworkCredential("username", "pass","www.site.com:2082");


_System.____Ftp___ TEST = new _System.____Ftp___("www.site.com", "user", "pass");
TEST.Login("www.site.com");
if (TEST.FileOrDirectoryExist("file.zip"))
{
MessageBox.Show("YES");
}

else
{
MessageBox.Show("NO");
}



نمیدونم مشکل چیه یکم توضیح بدین ممنون میشم.

nanosoftco
شنبه 22 مرداد 1390, 03:04 صبح
لازم نیست جواب بدین مشکل رو حل کردم مقادیر رو درست وارد نمیکردم درضمن باید از پنل هاست هم تنظیم میشد !