PDA

View Full Version : انتقال عکس از یک آدرس اینترنتی به روی هاست دیگر



sara_aryanfar
سه شنبه 13 تیر 1391, 10:47 صبح
با سلام فرض کنید ما تعدادی عکس داریم که آدرس اینترنتی اونا موجود هست حالا می خواهیم این عکسها رو از این لینک هاشون به روی یک هاست دیگر انتقال بدیم هاستی با کنترل پنل دایرکت ادمین چگونه می تونیم انجام بدیم ممنون

sara_aryanfar
چهارشنبه 14 تیر 1391, 10:42 صبح
یعنی امکان این وجود نداره که ما یک عکس رو مثلا از آدرس زیر
http://barnamenevis.org/image.php?u=191209&dateline=1316803332
به روی سرور سایت منتقل کنیم؟ یعنی فایل رو دیگه با دیالوگ شو آدرس دهی نکنیم

ahmadreza517
چهارشنبه 14 تیر 1391, 18:31 عصر
به نام تنها برنامه نویس هستی
سلام ,

برای این کار شما باید ابتدا عکس را دریافت کره و بعد بر روی سرور انتقال بدید.

برای دریافت می تونید از کد زیر استفاده کنید.


req =(HttpWebRequest) WebRequest.Create(txtFileAddress.Text);
req.Credentials = CredentialCache.DefaultCredentials;

res =(HttpWebResponse)req.GetResponse();

try
{
Int64 len;
stream = res.GetResponseStream();

byte[] buffer = new byte[2048];

len = res.ContentLength;

int byteRead = 0;

strLocal = new FileStream(txtSave.Text.ToString(), FileMode.Append, FileAccess.Write, FileShare.None);

while ((byteRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
strLocal.Write(buffer, 0, byteRead);
this.Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] { strLocal.Length, len });
}//end ring while
}
finally
{
stream.Close();
strLocal.Close();
t = null;
}


و برای ارسال از کد زیر


FileInfo _FileInfo = new System.IO.FileInfo("c:\\pic.jpg");
FtpWebRequest ftpWebRequest = (System.Net.FtpWebRequest)FtpWebRequest.Create(new Uri(FtpHostAddress + "pic.jpg"));

ftpWebRequest.Credentials = new System.Net.NetworkCredential("username", "password");
ftpWebRequest.KeepAlive = false;
ftpWebRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
ftpWebRequest.UseBinary = true;
ftpWebRequest.ContentLength = _FileInfo.Length;

int buffLength = 2048;
byte[] buff = new byte[buffLength];
FileStream _FileStream = _FileInfo.OpenRead();

try
{
Stream _Stream = ftpWebRequest.GetRequestStream();
int contentLen = _FileStream.Read(buff, 0, buffLength);
while (contentLen != 0)
{
_Stream.Write(buff, 0, contentLen);
contentLen = _FileStream.Read(buff, 0, buffLength);
}

_Stream.Close();
_Stream.Dispose();
_FileStream.Close();
_FileStream.Dispose();

label1.Invoke((MethodInvoker)delegate
{
label1.ForeColor = Color.Green;
label1.Text = "uploaded successfully !";
});

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//label1.ForeColor = Color.Green;
//label1.Text = "Error,Please Try Again !";
}


با کمی تغییرات برای کار خود می تونید اش استفاده کنید.

عکس رو از اینترنت می گیره (با پروتکل http ) و با در هاست ذخیره می کنه(با پروتکل ftp)

در کد بالا قسمت دریافت بجای ذخیره شدن در کامپیوترhard disk می تونید از MemoryStream استفاده کنی.

این جور که من فهمیدم این کدارو باید در پشت سر هم اجرا کنی و نکته اخر هم اینکه می تونی برای جلوگیری از هنگ کردن برنامه از thread یا کنترل backgroundworker استفاده کنی.

یاحق !

aradrobo
جمعه 24 آذر 1391, 11:13 صبح
به نام تنها برنامه نویس هستی
سلام ,

برای این کار شما باید ابتدا عکس را دریافت کره و بعد بر روی سرور انتقال بدید.

برای دریافت می تونید از کد زیر استفاده کنید.


req =(HttpWebRequest) WebRequest.Create(txtFileAddress.Text);
req.Credentials = CredentialCache.DefaultCredentials;

res =(HttpWebResponse)req.GetResponse();

try
{
Int64 len;
stream = res.GetResponseStream();

byte[] buffer = new byte[2048];

len = res.ContentLength;

int byteRead = 0;

strLocal = new FileStream(txtSave.Text.ToString(), FileMode.Append, FileAccess.Write, FileShare.None);

while ((byteRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
strLocal.Write(buffer, 0, byteRead);
this.Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] { strLocal.Length, len });
}//end ring while
}
finally
{
stream.Close();
strLocal.Close();
t = null;
}


و برای ارسال از کد زیر


FileInfo _FileInfo = new System.IO.FileInfo("c:\\pic.jpg");
FtpWebRequest ftpWebRequest = (System.Net.FtpWebRequest)FtpWebRequest.Create(new Uri(FtpHostAddress + "pic.jpg"));

ftpWebRequest.Credentials = new System.Net.NetworkCredential("username", "password");
ftpWebRequest.KeepAlive = false;
ftpWebRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
ftpWebRequest.UseBinary = true;
ftpWebRequest.ContentLength = _FileInfo.Length;

int buffLength = 2048;
byte[] buff = new byte[buffLength];
FileStream _FileStream = _FileInfo.OpenRead();

try
{
Stream _Stream = ftpWebRequest.GetRequestStream();
int contentLen = _FileStream.Read(buff, 0, buffLength);
while (contentLen != 0)
{
_Stream.Write(buff, 0, contentLen);
contentLen = _FileStream.Read(buff, 0, buffLength);
}

_Stream.Close();
_Stream.Dispose();
_FileStream.Close();
_FileStream.Dispose();

label1.Invoke((MethodInvoker)delegate
{
label1.ForeColor = Color.Green;
label1.Text = "uploaded successfully !";
});

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//label1.ForeColor = Color.Green;
//label1.Text = "Error,Please Try Again !";
}


با کمی تغییرات برای کار خود می تونید اش استفاده کنید.

عکس رو از اینترنت می گیره (با پروتکل http ) و با در هاست ذخیره می کنه(با پروتکل ftp)

در کد بالا قسمت دریافت بجای ذخیره شدن در کامپیوترhard disk می تونید از MemoryStream استفاده کنی.

این جور که من فهمیدم این کدارو باید در پشت سر هم اجرا کنی و نکته اخر هم اینکه می تونی برای جلوگیری از هنگ کردن برنامه از thread یا کنترل backgroundworker استفاده کنی.

یاحق !

لطفاً سورس کامل را برایم ایمیل کنید . چون برنامه خطا می دهد .

aradrobo
یک شنبه 22 بهمن 1391, 18:16 عصر
در قسمت دریافت خطا زیاد می دهد . مثل : req ، strLocal ، stream ، res

اصلاً این عبارات را نمی شناسد . مشکل از کجاست ؟ لطفاً پاسخ را خصوصی ارسال کنید .