View Full Version : سوال: اعتبار سنجي براي اندازه ي فايل درفرم آپلود فايل
ravand
یک شنبه 04 مهر 1389, 16:14 عصر
من يه ماهه دنبال يه كد جاوا اسكريپت هستم كه در فرم آپلود فايل ، فايل عكس رو قبل از ارسال به سرور چك بكنه و اگه اندازه اش بيش از اندازه ي مشخص شده باشه پيام بده و بگه اندازه ي شما بايد اينقدر باشه. و اندازه ي فايل شما زياده. خواهش مي كنم بهم كمك كنيد خيلي برام مهمه :گریه:
binyaft
یک شنبه 04 مهر 1389, 18:26 عصر
کد جاوا اسکریپت؟
فکر نکنم جاوا اسکریپت توابع کار با تصاویر رو داشته باشه !!
فرم اپلود شما با چه زبانی نوشته شده است؟
ravand
یک شنبه 04 مهر 1389, 19:33 عصر
ببخشيد ولي من كدهاي جاوا اسكريپت زيادي روي براي عكس ديدم يه نمونه اش اين كد زير كه اندازه ي عكس رو ميگه ولي من مي خوام اگه اندازه ي عكس بيش از اون چيزي بود كه من مشخص كردم پيغام بده و مانع بشه كه من عكس با حجم زياد رو آپلود كنم . ضمنا من مي خوام اين كد رو در قسمت كدهاي html استفاده كنم چون نمي خوام فرم قبل از ارسال به سرور مشكلي داشته باشه. ممنون ميشم اگه كمكم كنيد چون خيلي كارم بهش گيره .
<html>
<head>
<title></title>
<script>
function A()
{
var oas = new ActiveXObject("Scripting.FileSystemObject");
var d = document.a.b.value;
var e = oas.getFile(d);
var f = e.size;
alert(f + " bytes");
}
</script>
</head>
<body>
<form name="a">
<input type="file" name="b">
<input type="button" name="c" value="SIZE" onClick="A();">
</form>
</body>
</html>
ravand
پنج شنبه 08 مهر 1389, 08:23 صبح
هيچ كس نمي خواد سوال منو جواب بده؟ :عصبانی++:
khani_prog
شنبه 10 مهر 1389, 17:16 عصر
من اینکار با کنترل fileUplod در asp.netانجام دادم
binyaft
شنبه 10 مهر 1389, 22:23 عصر
من اینکار با کنترل fileUplod در ASP.NETانجام دادم
اگه شما با ای اس پی fileupload این کارو انجام دادید ! با پی اچ پی میشه تو سه خط نوشت!!!!!!!
ravand
شنبه 10 مهر 1389, 22:50 عصر
داداش من قبلا هم توضيح دادم كه چرا از php استفاده نمي كنم . علتش اينه كه نمي خوام فرم ارسال بشه و بعد برگرده بگه كه عكس شما حجمش زياده من مي خوام قبل از ارسال تكليفش معلوم بشه . نه اينكه ارسال بشه. بعد ... خواهش مي كنم كمكم كنيد. :عصبانی++:
binyaft
یک شنبه 11 مهر 1389, 12:01 عصر
با آژاکس این کار هارو انجام بده تا صفحه reload نشه
Keramatifar
یک شنبه 11 مهر 1389, 16:32 عصر
با سلام خدمت شما دوست عزیز
شما با همین فانکشنی که خودت داری می تونی اینکار رو انجام بدی، فقط باید فانکشنت یک خروجی true/false داشته باشه و submit شدن فرمت رو مشروط به خروجی این فانکشن بکنی، من کدی که خودت گذاشتی رو برات یکم تغییر دادم:
<html>
<head>
<title></title>
<script>
function CheckFileSize()
{
var oas = new ActiveXObject("Scripting.FileSystemObject");
var d = document.a.b.value;
var e = oas.getFile(d);
var f = e.size;
alert(f + " bytes");
//--------- Added By Mohammad Keramati @1389/7/11 --------------
if (f > 10000)
{
alert('File is Too Large');
return false;
}
else
{
alert('Your File is Standard');
return true;
}
//-------------------------
}
</script>
</head>
<body>
<form name="a" onsubmit="return CheckFileSize()">
<input type="file" name="b">
<input type="submit" name="submit"/>
<input type="button" name="c" value="SIZE" onClick="A();">
</form>
</body>
</html>
ravand
یک شنبه 11 مهر 1389, 17:23 عصر
داداش
من اين كار رو با جاوا اسكريپت انجام دادم حتي صفحه ي منو ري ست هم مي كنه ولي مشكل اينجاست كه اين كدهاي جاوا اسكريپت در هاست php اصلا كار نمي كنه . قبلا هم با vb script نوشته بودم كار نمي كرد . مشكل چيه و بايد چيكار كنم؟
كدي كه من نوشتم توي اين آدرسه : http://barnamenevisi.blogsky.com/1389/07/11/post-62/
raravaice
یک شنبه 11 مهر 1389, 17:33 عصر
ActiveXObject("Scripting.FileSystemObject")
Active X ها تنها در مرورگر IE قابلیت استفاده دارند، شما اگر قصد دارید تنها در IE از این قابلیت استفاده کنید که کد ذکر شده صحیح است ولی خوب در صورتی که یکی از کاربران شما از مرورگری غیر از IE استفاده کنه امکان داره به مشکلات بدی برخورد کنید.همچنین امکان ایجاد تغییر را نیز برای کاربران شیطون فراهم خواهید کرد.
در کل هیچ استانداردی برای انجام این کار در javascript وجود ندارد. در نتیجه بهترین راه حل استفاده از script های server side میباشد.
موفق باشید
ravand
دوشنبه 12 مهر 1389, 10:31 صبح
براي چي شيطنت ؟ من مي خواستم به غير از اعتبارسنجي با جاوا اسكريپت از كدهاي php هم استفاده كنم ديگه چجوري مي تونن هك بكنن؟:متفکر: حالا من بايد چيكار كنم ؟يعني حتما ثبت نام كننده مجبوره فرمش ارسال بشه به سرور و برگرده بگه عكس شما حجمش زياده؟ يا راهي براي حل اين مشكل هست؟ اين موضوع خيلي برام مهمه . ممنون ميشم راهنماييم كنيد.
mohsen_Iran
دوشنبه 12 مهر 1389, 21:16 عصر
سلام من یکم در مورد این موضوع جستجو کردم تونستم دو روش دیگه هم برای این کار پیدا کنم
اولی استفاده از فلش است که فایلشو فرستادم
دومی روش روشی است که در html5 و مرورگرهایی که پشتیبانی دارن استفاده میشه! با استفاده از جاوا اسکریپت میشه این کارو انجام داد و باید ازداده هایی از نوع filereader استفاده کنید و خاصیت lenght. براتون فرستادم یک صفحه html است با فایر فاکس 3.6.10 و کروم 7+ تست کردم کار کرد. مثال از لینک زیر است http://code.google.com/p/chromium/issues/attachmentText?id=37785&aid=-5569761052055912941&name=file_test.html&token=d9c5ce2bfd81d2d365b0089a85e69312
امیدوارم مفید باشه
ravand
سه شنبه 13 مهر 1389, 14:59 عصر
سلام داداش
خيلي ممنون بابت اين زحمتي كه برام كشيدي كمتر كسي مثل شما پيدا ميشه كه به آدم كمك كنه. ميگم اين آدرس شما باز نميشه http://code.google.com/p/chromium/issues/attachmentText?id=37785&aid=-5569761052055912941&name=file_test.html&token=d9c5ce2bfd81d2d365b0089a85e69312
يه بار ديگه تستش كنيد .
اون كد ها رو هم امتحان كردم خوب بود . ولي به نظرتون راه ديگه اي نيست ؟ چون من مي خوام با جاوا اسكريپت باشه . هيچي مثل اين جاوا اسكريپت نيمشه .
من توي وبلاگ هاي بلاگ اسكاي توي قسمت ارسال عكس مدير رفتم و يه عكس ارسال كردم چون حجمش زياد بود بهم يك اخطار داد . اگه يه چيزي مثل اونم بسازم خوبه بهتر از هيچيه . البته با php . خودم بلدم يه اعتبار سنجي با php بنويسم ولي اين انگار فرق داشت انگار فرمم ارسال نميشد دوباره بر گرده.
بازم ممنون.:لبخند:
ravand
چهارشنبه 14 مهر 1389, 23:24 عصر
من در اين مورد خيلي تحقيق كردم و به اين نتايج رسيدم كه :
1) مي تونم به وسيله ي كدهاي html كه بهترين روش است اين كار رو بكنم كه ديگه صفحه رفرش نشه آموزشش رو يكي از دوستان در اين قسمت گذاشته :
http://barnamenevis.org/forum/showthread.php?t=212257
با استفاده از target و iframe و با ارتباط دادن اين دو با استفاده از شيوه نامه .
فقط نمي دونم چجوري يك پيغام ايجاد كنم كه مثلا اندازه ي عكس زياده
2) روش دوم استفاده از فلش هست كه بهتره استفاده نكنم چون ممكنه توي سيستم طرف فلش پلير نصب نباشه.
3 ) روش سوم استفاده از كد زير در php است كه باعث مي شود فرم ارسال نشود . كه بعدا برگردد.
<form action="<?php echo $_SERVER['PHP_SELF'];?>" ولي يكي از دوستان بهم گفت كه اين PHP_SELF امنيت ندارد. :لبخند:
http://barnamenevisi.blogsky.com/ وبلاگ آموزش طراحي صفحات وب
mohsen_Iran
پنج شنبه 15 مهر 1389, 12:04 عصر
سلام
در مورد لینکی که گفتید بله چون برای code.google است برای ما محدود شده بس از یک طریق فیلترشکن ... برید و اونجا همون فایل دومی که من فرستادم وجود داره که با کد جاوا اسکریپت این کارو براتون انجام میده ولی توی مرورگرهای جدید قابل استفاده است و کلا سمت کلاینت است و نیاز به انجام به صورت ajax هم نمی باشد شما می تونید کد فایل دوم که html است رو نگاه کنید یک قسمت داره برای filereader که با یک خاصیت از اون حجم فایل رو بررسی میکنه! همانطور گفتم این تکنولوژی جدید است شما توی این روش هم می تونید اندازه عکس رو هم به همراه سایز فایلتون بررسی کنید!
البته برای چک کردن اندازه شما می تونید تو جاوا اسکریپت یک متغییر از نوع image تعریف کنید بعد خاصیتهای width و height اون سایز عکس رو متوجه بشید و باید عکستون رو به این متغییر نسبت بدید جستجو کنید تو گوگل راحت پیدا میکنید
در مورد روش سومی که گفتید روشی سمت سرور است! من چون Asp.net کار میکنم نمی تونم نظر بدم
mohsen_Iran
پنج شنبه 15 مهر 1389, 12:11 عصر
این یک نمونه کد با جاوا اسکریپت برای اندازه عکس
var img = new Image();
img.src = 'http://www.google.com/intl/en_ALL/images/logo.gif';
alert(img.width + 'x' + img.height);
mohsen_Iran
پنج شنبه 15 مهر 1389, 12:24 عصر
و اینم کدی که شما می خوایید از همون فایل دومی است که برای گوگل است سادش کردم براتون قرار بدم با html5 است
نام فایل، نوع فایل، حجم فایل را نمایش می دهد!
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function handleFiles(files)
{
var txt = "files.length = " + files.length + "<br/>";
for (var i = 0; i < files.length; i++)
{
var f = files.item(i);
txt += i + ": " + f.name;
txt += " (" + f.type + "; " + f.size + " bytes)<br/>";
}
document.getElementById("status").innerHTML = txt;
}
</script>
</head>
<body>
<input type="file" id="input" onChange="handleFiles(this.files)" />
<div id="status"></div>
</body>
</html>
ravand
پنج شنبه 15 مهر 1389, 14:23 عصر
داداش اين كد اصلا كار نمي كنه . :افسرده: اون كد قبليش چيز جالبيه ولي اگه بشه به صورت اعتبارسنجي ازش استفاده كرد عالي ميشه.
mohsen_Iran
پنج شنبه 15 مهر 1389, 14:59 عصر
سلام
من دوباره تست کردم کد بالایی کار میکنه! تو فایرفاکس 3.6.10 تو کروم 7.0.517.17 کار میکنه!
شاید از مرورگرتون باشه! مرورگر باید از html5 پشتیبانی کنه
ravand
پنج شنبه 15 مهر 1389, 21:04 عصر
داداش
من دليل اينكه از كد اولي استفاده نكردم همين بود كه همه ي مرورگرها ازش پشتيباني نمي كردن . وگرنه به شما زحمت نمي دادم و از همون كد اولي استفاده مي كردم.
ميگم
من اين كد رو در يكي از پست هاي اين سايت ديدم كه ديگه صفحه ارسال نميشه . و اوني كه اين كد رو پيشنهاد داده بود گفته بود از onload در فريم استفاده كنيد تا ارسال فرم رو بهتون نشون بده يا اخطار ها رو بهتون بگه ولي نمي دونم چجوري بايد اين كار كرد. :افسرده: http://barnamenevis.org/forum/showthread.php?t=212257
<form target="myFrame" action="upload.php" method="POST" enctype="multipart/form-data" >
<input type="file" name="file" />
<input type="submit" name="submit" value="Upload" />
</form>
<iframe name="myFrame" style="display: none;"></iframe>
ravand
شنبه 17 مهر 1389, 15:26 عصر
يكي بياد منو راهنمايي كنه :گریه: خسته شدم يه ماه و نيمه دارم روي اين موضوع فكر مي كنم :عصبانی++:
ravand
یک شنبه 18 مهر 1389, 13:01 عصر
من از اين كد در قسمت سمت سرور استفاده كردم
print ("<script type='text/javascript'>alert('send')</script>");
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.