PDA

View Full Version : انتخاب فايل از روي سرور (from url)



bftarane
سه شنبه 30 آبان 1391, 22:48 عصر
سلام چطور ميشه به کاربر اين امکان رو داد تا عکس رو از روي سرور انتخاب کنه و آپلود کنه؟
ببينيد يه دراپ داريم مثلاً گزينه هاش ايناس
انتخاب تصوير
از روي کامپيوتر
از روي سرور

خوب يه فايل آپلود هم در صفحه داريم و يه دکمه به اسم آپلود
و يه تکست باکس هم داريم که داخلش نوشته شده //:http
من از روي کامپيوتر رو بلدم
ولي از روي سرور رو نمي دونم چه طوريه.
من اين عکس رو از همين سايت برنامه نويس گرفتم و فکر مي کنم منم بايد يه همچين چيزي رو پياده کنم
95320
http://voniv.com/www/PicofDay/macro.jpgو اينطوري آدرسم رو http://www.test.com/Images/test.jpg
و ok ميکنم ولي اتفاقي نمي افته.
اشتباه من کجاست؟
ببخشيد فکر مي کنم سوال خيلي ساده اي باشه ولي چون من کار نکردم باهاش برام گنگه.
http://voniv.com/www/PicofDay/macro.jpg

mhq1368
سه شنبه 30 آبان 1391, 22:57 عصر
سلام

اگه اشتباه نکنم همین آدرس زیر عکس رو باید تو دیتا بیس دخیره کنید بعد هم با روش های معمول مثل Eval عکستون رو تو img نشون بدین



<img src="<%#Eval("نام فیلد در جدول")%>" / >

bftarane
سه شنبه 30 آبان 1391, 23:16 عصر
يعني اون ok که زده ميشه فرايند درج آدرس اتفاق بيفته؟

mhq1368
سه شنبه 30 آبان 1391, 23:23 عصر
آره دوست عزیز

bftarane
سه شنبه 30 آبان 1391, 23:28 عصر
بازم اگه کسي نظري داره دوست دارم بشنوم.

fakhravari
چهارشنبه 01 آذر 1391, 08:16 صبح
فعلا دسترسی تست ندارم.
WebClient.DownloadString Method (Uri)

bftarane
چهارشنبه 01 آذر 1391, 08:26 صبح
ممنون که جواب داديد.
آقاي فخرآوري متوجه نشدم يعني کدي که گذاشتيد رو کجا بايد قرار بدم؟ اشکال نداره واضح تر بگيد خودم تست مي کنم.

..........................
http://barnamenevis.org/voniv962/voniv.com/www/PicofDayhttp://voniv962/voniv.com/www/PicofDayبچه ها من هر چي دارم امتحان مي کنم نمي تونم يه عکس از سرور در همين تاپيک بزارم لطفاً هر کس امکانش رو داره از اين روش امتحان کنه (يعني آپلود عکس از طريق url) بعد بگه چه آدرسي وارد کرده

bftarane
چهارشنبه 01 آذر 1391, 09:01 صبح
آقاي فخرآوري لينک زير رو پيدا کردم منظورتون رو متوجه شدم
http://forums.asp.net/t/959418.aspx/1
حالا برم امتحان کنم ببينم چي ميشه. اگه مشکلي داشتم مي يام مي پرسم. به اين نتيجه رسيدم شايد تو سايت برنامه نويس اون امکان اصلاً شايد حالت نمايشي داره و کار نمي کنه.

fakhravari
چهارشنبه 01 آذر 1391, 11:54 صبح
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=115

bftarane
چهارشنبه 01 آذر 1391, 13:02 عصر
سلام.

من تا يه جايي کار رو انجام دادم
همونطور که در شکل زير مي بينيد
ژ95347
کاربر بايد مسيري که عکس در اون هست رو در تکست باکس بالايي
مثل http://www.test.com/pics/test.jpg
وارد کنه
و در تکست باکس پاييني اسم عکس رو همراه پسوندش وارد کنه
يعني اينجا بايد وارد کنه test.jpg
حالا فايل آپلود ميشه من تست کردم و نتيجه گرفتم
منتها الآن سوالاتي دارم
1. چطور ميشه کاري کرد که کاربر فقط همون تکست باکس اول رو پر کنه و ديگه نياز نباشه مجدداً نام عکس رو هم وارد کنه
2. اگه بخواهيم فقط فايلهاي jpg,png,gif و با حداکثر اندازه 800KB و 200*200 پيکسل رو کاربر فقط بتونه وارد کنه
چطور بايد عمل فيلترينگ رو انجام بديم.
و اينکه اصلاً اون فايل که آدرسش رو کاربر وارد کرده وجود داره يا نداره
فايل رو هم ضميمه کردم.
ممنون ميشم جواب من رو بديد.

سرچ زياد زدم اما منابع اصلي که استفاده کردم اينا بودن
http://www.geekpedia.com/tutorial66_Using-WebClient-to-download-a-file.html
http://www.haiders.net/post/ASPNET-Download-File-with-C-Sharp.aspx

آقاي فخرآوري عزيز ممنون از لينکي که گذاشتيد اگه ممکنه با همين روشي که در بالا خودم رفتم بقيه راه رو راهنمايي کنيد.

خواهش مي کنم بقيه دوستان هم مشارکت کنن. فکر مي کنن بحث جالبيه و به درد خيليا بخوره.
اينم کدها

protected void btn_upfromurl_Click(object sender, EventArgs e)
{
WebClient wc = new WebClient();
string url = txt_url.Text;
string filename = txt_savepath.Text;
string savepath = Server.MapPath("~/Upload/" + filename);
wc.DownloadFile(url, savepath);
}

fakhravari
چهارشنبه 01 آذر 1391, 16:44 عصر
برای دریافت نام
string url = "http://weblogs.asp.net/blogs/stevewellens/2009_Dec/AddNewItem.png";
string[] Arry = url.Split('/');
string NewName = Arry[Arry.Length - 1];

--------------------------------------------------------

protected void btn_upfromurl_Click(object sender, EventArgs e)
{
SaveFile("mohamad/fakhravary", "http://weblogs.asp.net/blogs/stevewellens/2009_Dec/AddNewItem.png");
}

public static bool SaveFile(string ServerMap, string Url)
{
try
{
if (!Directory.Exists(HttpContext.Current.Server.MapP ath("~/" + ServerMap + "/")))
{
Directory.CreateDirectory(System.Web.HttpContext.C urrent.Server.MapPath("~/" + ServerMap + "/"));
}

WebClient wc = new WebClient();
string[] Arry = Url.Split('/');
wc.DownloadFile(Url, HttpContext.Current.Server.MapPath("~/" + ServerMap + "/" + Arry[Arry.Length - 1]));
return true;
}
catch { return false; }
}

bftarane
چهارشنبه 01 آذر 1391, 16:55 عصر
خوب سوال 1 به لطف آقاي فخرآوري حل شد
لطفاً هر کس بلده به سوالاي زير پاسخ بده

2. اگه بخواهيم فقط فايلهاي jpg,png,gif و با حداکثر اندازه 800KB و 200*200 پيکسل رو کاربر فقط بتونه وارد کنه
چطور بايد عمل فيلترينگ رو انجام بديم.
و اينکه اصلاً اون فايل که آدرسش رو کاربر وارد کرده وجود داره يا نداره

fakhravari
پنج شنبه 02 آذر 1391, 13:03 عصر
خوب سوال 1 به لطف آقاي فخرآوري حل شد
لطفاً هر کس بلده به سوالاي زير پاسخ بده

public static bool SaveFileFromUrl(string MapPath, string Url, int FileSize)
{
try
{
if (!Directory.Exists(HttpContext.Current.Server.MapP ath("~/" + MapPath + "/")))
{
Directory.CreateDirectory(System.Web.HttpContext.C urrent.Server.MapPath("~/" + MapPath + "/"));
}

WebClient wc = new WebClient();
string[] Arry = Url.Split('/');

System.IO.Stream stream = wc.OpenRead(Url);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(stream);

if ((bmp.Height < 400) && (bmp.Width < 400))
{
return false;
}
else
{
wc.DownloadFile(Url, HttpContext.Current.Server.MapPath("~/" + MapPath + "/" + Arry[Arry.Length - 1]));
return true;
}
}
catch { return false; }
}


SaveFileFromUrl("mohamad/fakhravary", "http://www.blogfa.com/photo/f/fakhravary.jpg", 20);
برای سایز بعد کدش میزارم

fakhravari
یک شنبه 05 آذر 1391, 18:23 عصر
برسی حجم فایل
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(stream);

MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Bmp);

int id = (int)ms.ToArray().Length;