PDA

View Full Version : سوال: آپلود عکس در هاست



mahlake
پنج شنبه 15 آبان 1393, 11:33 صبح
با سلام خدمت مهندسین گرامی...
بنده یک برنامه دارم که شبیه به پینت هست..
حالا میخوام وقتی کاربر روی ذخیره کلیک کرد عکس در هاست ذخیره شود..
کل این تالار رو گشتم اما هیچ کدی پیدا نکردم و تو اینترنت هم هرچی هست برای ASP هست که به کار من نمیاد...

لطفا بنده را راهنمایی نمایید...
چطور میتوانم عکس خود را ذخیره کنم؟؟؟
البته اگه درباره تغییر نحوه سایز عکس هم بتونید راهنماییم کنید ممنون میشم... مثلا سایز عکس را ه به ۵۰٪ کاهش بدم...

پیشاپیش از وقتی که برای بنده میگذارید کمال تشکر را دارم...

امیدوارم که این پست در آینده به بقیه دوستانی که مثل من تازه کار هستند هم کمک مفیدی کند..

Behnam6670
پنج شنبه 15 آبان 1393, 12:09 عصر
برا آپلود کردن عکس از یه برنامه ویندوز توی یه هاست از روش زیر استفاده کن(این برای سی شارپ به ASP.net هستش که میگم)

1- سمت هاست(تو وب سایتت)

اول تو وب سایتت یه صفحه به اسم مثلا Upload.aspx درست کن
بعد برو تو PageLoad مربوط به صفحه ای که ساختی کد زیر رو اضافه کن


foreach (string f in Request.Files.AllKeys)
{
HttpPostedFile file = Request.Files[f];
string path = Request.QueryString["path"];
DirectoryInfo ObjSearchDir = new DirectoryInfo(Server.MapPath( path));
if (!ObjSearchDir.Exists)
{
ObjSearchDir.Create();
}
file.SaveAs(Server.MapPath( path) + "/" + file.FileName);
}


path مسیری هست که میخوای عکست اونجا ذخیره بشه که من اینجا بصورت یه QueryString مسیر رو هم از برنامه ویندوز پاس میکنم بهش

در ضمن باید کتابخونه های زیر رو using کنی

using System.Net;
using System.IO;



2-سمت برنامه ویندوزت


مثلا با یه OpenFileDialog یه عکس رو میخوای انتخاب کنی و برا آپلود کردن رو سایت از کد زیر استفاده کن



private void loadImage()
{
openFileDialog1.Filter =
"Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF";
openFileDialog1.Title = "انتخاب تصویر";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
WebClient client = new WebClient();
string uploadWebUrl = "http://DomainName.com/upload.aspx?path=" + "Images\\Mobile" + "\\" + "Pic";
string fileName = openFileDialog1.FileName;
client.UploadFile(uploadWebUrl, fileName);


}
}


اینجا هم بهید کتابخونه زیر رو using کنی


using System.Net;

بجای DomainName.com آدرس سایتت رو بزن


جلوی path هم مسیری که دادم رو دقت کن باید رو هساستت باشه.این همون مسیری هستش که تو سمت سایتت از طریق QueryString دریافت میشه

به همین خوشمزگی شما میتونی از طریق یه برنامه ویندوز ساده هر فایلی رو آپلود کنی رو سایتت :قهقهه:

من با این روش تا حجم 600 مگ رو هم آپلود کردم:متعجب:
البته حجم آپلود رو میشه تو IIS مدیریت کرد

موفق باشی.
صلوات یادت نره:تشویق:

mahlake
پنج شنبه 15 آبان 1393, 15:24 عصر
برا آپلود کردن عکس از یه برنامه ویندوز توی یه هاست از روش زیر استفاده کن(این برای سی شارپ به ASP.net هستش که میگم)

1- سمت هاست(تو وب سایتت)

اول تو وب سایتت یه صفحه به اسم مثلا Upload.aspx درست کن
بعد برو تو PageLoad مربوط به صفحه ای که ساختی کد زیر رو اضافه کن


foreach (string f in Request.Files.AllKeys)
{
HttpPostedFile file = Request.Files[f];
string path = Request.QueryString["path"];
DirectoryInfo ObjSearchDir = new DirectoryInfo(Server.MapPath( + path));
if (!ObjSearchDir.Exists)
{
ObjSearchDir.Create();
}
file.SaveAs(Server.MapPath( path) + "/" + file.FileName);
}


path مسیری هست که میخوای عکست اونجا ذخیره بشه که من اینجا بصورت یه QueryString مسیر رو هم از برنامه ویندوز پاس میکنم بهش

در ضمن باید کتابخونه های زیر رو using کنی

using System.Net;
using System.IO;




با سپاس فراوان از وقت و انرژی که برای بنده میگذارید.
در قسمت اول از این تیکه ارور میگیرد:
Server.MapPath(+path)

ارور ها:
Error 1 The best overloaded method match for 'System.Web.HttpServerUtility.MapPath(string)' has some invalid arguments


Error 2 Argument 1: cannot convert from 'object' to 'string'



Error 3 Operator '+' cannot be applied to operand of type 'string'

Behnam6670
پنج شنبه 15 آبان 1393, 21:47 عصر
با سپاس فراوان از وقت و انرژی که برای بنده میگذارید.
در قسمت اول از این تیکه ارور میگیرد:
Server.MapPath(+path)

ارور ها:
Error 1 The best overloaded method match for 'System.Web.HttpServerUtility.MapPath(string)' has some invalid arguments


Error 2 Argument 1: cannot convert from 'object' to 'string'



Error 3 Operator '+' cannot be applied to operand of type 'string'

دوست عزیز کد بالا رو اصلاح کردم قبل path اون + زیادی بود من از کدی که خودم استفاده کرده بودم برات گذاشته بودم که باید اونو حذفش میکردم یبار دیگه تست کن:چشمک:

mahlake
یک شنبه 25 آبان 1393, 01:13 صبح
دوست عزیز کد بالا رو اصلاح کردم قبل path اون + زیادی بود من از کدی که خودم استفاده کرده بودم برات گذاشته بودم که باید اونو حذفش میکردم یبار دیگه تست کن:چشمک:
با سلام ببخشید وقفه افتاد... داشتم هاست رو اکی میکردم...

این کد هنوز ارور میده اینم تصویر ارور هست

http://upload7.ir/imgs/2014-11/03475673645684782294.jpg (http://upload7.ir/)

اینم مقدار ذخیره شده در متغییر ها:
"http://rahy.ir/upload.aspx?path=Images\\emza\\Pic"
".jpg"

Behnam6670
یک شنبه 25 آبان 1393, 06:45 صبح
این خطا مربوط به درخواست وب کلاینت برای آپلود روی سرور هستش

آیتم های زیر رو چک کن

codena.jpg موجود هست؟؟؟؟؟با این روشی که تو داذی باید این فایل کنار فایل Exe باشه تو Bin>Debug فکر کنم تو بعداز اینکه درخواست آپلود را دادی اومد codena رو مقدار دهی کردی که باید قبلش باشه
uploadWebUrl رو هم چک کن که آیا با اون آدرس ی که دادی دسترسی داره یا نه؟؟

در غیر اینصورت اگه دستورای مربوط به PageLoad صفحه وبت رو درست نوشته باشی باید درست اپلود بشه

بنظرم بهترین روشه برای آلپلود کردن از یه برنامه ویندوزی روی یه هاست من با این روش یه ftp خیلی قوی نوشتم:بوس:

mahlake
یک شنبه 25 آبان 1393, 08:53 صبح
این خطا مربوط به درخواست وب کلاینت برای آپلود روی سرور هستش

آیتم های زیر رو چک کن

codena.jpg موجود هست؟؟؟؟؟با این روشی که تو داذی باید این فایل کنار فایل Exe باشه تو Bin>Debug فکر کنم تو بعداز اینکه درخواست آپلود را دادی اومد codena رو مقدار دهی کردی که باید قبلش باشه
uploadWebUrl رو هم چک کن که آیا با اون آدرس ی که دادی دسترسی داره یا نه؟؟

در غیر اینصورت اگه دستورای مربوط به PageLoad صفحه وبت رو درست نوشته باشی باید درست اپلود بشه

بنظرم بهترین روشه برای آلپلود کردن از یه برنامه ویندوزی روی یه هاست من با این روش یه ftp خیلی قوی نوشتم:بوس:

بله موجود هست و منظورت رو از این که باید کنار EXE باشه دقیقا نفهمیدم...متغیر codena قبلا پر شده و من با مقدار جدید پرش میکنم و جای دیگه ازش استفاده میکنم..

چطور چک کنمش؟

ببخشید من خیلی اطلاعات ندارم ولی فکر نمیکنید که لازمه عکس رو از پیکچر باکس بگیریم یا که یک جا ذخیره کنیمش و بعد به هاست پاس بدیمش؟

من اون صفحه وب رو گذاشتم تو روت هاست... اگه لازمه کدش رو بزارم؟
این آدرس جلو پچ برای چی هست؟

path=Images\\emza\\Pic

Behnam6670
یک شنبه 25 آبان 1393, 09:31 صبح
بله موجود هست و منظورت رو از این که باید کنار EXE باشه دقیقا نفهمیدم...متغیر codena قبلا پر شده و من با مقدار جدید پرش میکنم و جای دیگه ازش استفاده میکنم..

چطور چک کنمش؟

ببخشید من خیلی اطلاعات ندارم ولی فکر نمیکنید که لازمه عکس رو از پیکچر باکس بگیریم یا که یک جا ذخیره کنیمش و بعد به هاست پاس بدیمش؟

من اون صفحه وب رو گذاشتم تو روت هاست... اگه لازمه کدش رو بزارم؟
این آدرس جلو پچ برای چی هست؟

path=Images\\emza\\Pic

خب دوست عزیز عکس یا هر فایلی که مد نظرته باید موجود باشه دیگه میتونی از OpenFileDialog استفاده کنی و از خاصیت FileName اون استفاده کنی

mahlake
یک شنبه 25 آبان 1393, 10:29 صبح
خب دوست عزیز عکس یا هر فایلی که مد نظرته باید موجود باشه دیگه میتونی از OpenFileDialog استفاده کنی و از خاصیت FileName اون استفاده کنی
این همونطور که گفتم یک برنامه برای گرفتن امضا هست.
عکس توی پیکچر باکس تولید میشه...
من میخوام عکس رو مستقیم از پیکچرباکس ذخیره کنم... امکانش هست؟
اگه نیست من تو کدم باید چه تغییری انجام بدم:


//pictureBox1.Image.Save("C:\\emza\\"+codena+".jpg", ImageFormat.Jpeg);
WebClient client = new WebClient();
string uploadWebUrl = "http://<b>rahrocyclets.ir</b>/upload.aspx?path=" + "Images\\emza" + "\\" + "Pic";
string fileName = codena+".jpg";
client.UploadFile(uploadWebUrl, fileName);


این آدرس جلوی path توی هاست باید باشه ؟

Images\\emza\\Pic

Behnam6670
دوشنبه 26 آبان 1393, 06:46 صبح
این همونطور که گفتم یک برنامه برای گرفتن امضا هست.
عکس توی پیکچر باکس تولید میشه...
من میخوام عکس رو مستقیم از پیکچرباکس ذخیره کنم... امکانش هست؟
اگه نیست من تو کدم باید چه تغییری انجام بدم:


//pictureBox1.Image.Save("C:\\emza\\"+codena+".jpg", ImageFormat.Jpeg);
WebClient client = new WebClient();
string uploadWebUrl = "http://<b>rahrocyclets.ir</b>/upload.aspx?path=" + "Images\\emza" + "\\" + "Pic";
string fileName = codena+".jpg";
client.UploadFile(uploadWebUrl, fileName);


این آدرس جلوی path توی هاست باید باشه ؟

Images\\emza\\Pic

آره درسته
فقط اون codena چه مقداری داره؟؟؟؟
بصورت ثابت تست کن ببین جواب میده مثلا تو درایو c یه فایل بزار عکس یا هرچیزی مثلا C:\test.jpg
بعد اینو بعنوان filename بزار تو client.UploadFile
ببین نتیجه میگیری؟
در ضمن من پیشفرض رو بر این گذاشتم که سایت شما با asp.net هستش و همچنین صفحه upload.aspx تو روت سایتت موجود هستش:چشمک:

اگه میتونی کد سمت فایل upload.aspx رو هم بزار

Behnam6670
دوشنبه 26 آبان 1393, 11:35 صبح
http://barnamenevis.org/showthread.php?476033-%D9%86%D8%AD%D9%88%D9%87-%D8%A2%D9%BE%D9%84%D9%88%D8%AF-%D9%81%D8%A7%DB%8C%D9%84-%D8%AF%D8%B1-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%A8%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2%DB%8C-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%B3%D9%88%D8%B1%D8%B3-%D9%88-%D8%A2%D9%85%D9%88%D8%B2%D8%B4