PDA

View Full Version : سوال: فرم ساز ASP



farrokhpey.mahdi
دوشنبه 21 بهمن 1387, 18:31 عصر
سلام دوستان
من تو تاپیکهای این بخش سرچ زدم اما پیدا نکردم ، اگه شما سراغ دارید بگید ، اما سوال من اینه :
من یک فرم ساز دارم طراحی میکنم ، با استفاده از FCKEditor کار طراحی ظاهر فرمها رو انجام دادم ، کدنویسی صفحه پست هم راحت انجام شد ، اما نیاز به گذاشتن کنترل آپلود تو فرم ساز پیدا شد و من دکمه مربوط به این کنترل رو برای FCKEditof ایجاد کردم اما برای کدنویسی صفحه پست نمیتونم به مقادیر ارسالی از کنترل فایل دسترسی داشته باشم چون گویا به صفحه بعد ارسال نمیشه یا از طریق خاصی ارسال میشه .
من مقادیر ارسالی از کنترلها رو با استفاده از دستور زیر گرفتم که متاسفانه همین کنترل فقط از این طریق قابل دسترسی نیست !!!
Request.Params میتونه مقادیر ارسالی از کنترلها در صفحه قبل رو بده ، جز همین فایل
کسی میتونه در زمینه ساخت این فرم ساز کمکی بکنه ؟!!!

Chabok
سه شنبه 22 بهمن 1387, 00:16 صبح
می توانید فایل های ارسال شده را توسط کد زیر ذخیره کنید .
این فایل ها حتی می توانند توسط یک صفحه HTML ارسال شده باشند .


int numfiles = Request.Files.Count;
string path = @"C:\What\ever\";

for(int i=0; i<numfiles; i++)
{
HttpPostedFile file = Request.Files[i];

if(file != null && file.ContentLength > 1)
{
file.SaveAs(path + Path.GetFileName(file.FileName));
}
}

در صورتی که دفعات بعدی عنوان تاپیک به مشکل نزدیک تر باشه زودتر به نتیجه خواهید رسید .:چشمک:
موفق باشید .

farrokhpey.mahdi
سه شنبه 22 بهمن 1387, 10:43 صبح
Chabok (http://barnamenevis.org/forum/member.php?u=6919) عزیز ممنون ، ولی این هم که نشد ، یعنی Request.Files.Count برای من مقدار صفر رو میاره با این که تو صفحه قبل دو تا کنترل فایل قرار دادم و هر دو مقدار داشت و enctype فرم هم multipart/formdata انتخاب شده بود .
کار دیگه ای باید کرد ؟؟؟

Chabok
سه شنبه 22 بهمن 1387, 19:52 عصر
سلام

من خیلی سرچ کردم . راستش دقیقا همین مشکل نیز مطرح شده بود . ولی طرف نوشته بود با enctype=multipart/formdata حل شد

راستش تنها تفاوتی که در کدها دیدم این بود که ابتدا Request.Files رو داخل یک Collection میریزن و بعدش استفاده میکنند . چیزی شبیه کد زیر :


HttpFileCollection uploadFilCol = Request.Files;
for(int i=0;i<uploadFilCol.Count;i++)
{
HttpPostedFile file = uploadFilCol[i];
string fileExt = Path.GetExtension(file.FileName).ToLower();
string fileName = Path.GetFileName(file.FileName);
if(fileName != string.Empty)
{
try
{
if(fileExt == ".jpg" || fileExt == ".gif")
{
file.SaveAs(Server.MapPath("./Images/") + fileName);
}
else
{
file.SaveAs(Server.MapPath("./Others/") + fileName);
}
}
catch(Exception ex)
{
throw ex;
}
}
}

ولی مطمئن نیستم جواب بده .
امیدوارم که مشکلتون حل بشه . و اگر حل شد راه حل رو همین جا بزارید .

موفق باشید .

farrokhpey.mahdi
پنج شنبه 24 بهمن 1387, 08:37 صبح
مشکل اینجاست که وقتی وارد صفحه دوم میشم مقدار files.count صفره ، یعنی هیچ فایلی وجود ندارد ، وگرنه این راه حل بسیار هم درست عمل خواهد کرد
یعنی با توحه به این که uploadFilCol.Count مقدارش صفره ، حلقه اصلا اجرا نمیشه و چیزی برای ذخیره کردن نداره.

Chabok
پنج شنبه 24 بهمن 1387, 10:50 صبح
من هم عرض کردم که مشکل شما رو متوجه شدم .
ولی همه سایت هایی که این کد را گذاشته بودند یک صفحه asp.net استاندارد بودن .

یعنی صفحه form runat=server داشت و همه input ها نیز runat=server بودن .
ظاهرا این کد فقط در این شرایط جواب میده .

در واقع از این کد برای Multiple Uploads استفاده کرده بودن .

موفق باشید .