PDA

View Full Version : کمک برای آپلود یک فایل در پی اچ پی



shahryari
شنبه 19 بهمن 1392, 08:46 صبح
سلام دوستان
با توجه به کد زیر:

<?php
$f = $_GET["FileName"]; // return C:\test.txt
$fu = $_FILES[$f]['name'];
$fuo = $_FILES[$f]['tmp_name'];
move_uploaded_file($fuo , $fu);
?>
عمل آپلود صورت نمیگیرد
مثل اینکه مقدارهای $fu و $fuo نال هستند
لطفا راهنمایی کنید

sadegh1362
شنبه 19 بهمن 1392, 10:09 صبح
سلام
شما نباید نام فایل رو در اندیس آرایه دریافت نام فایل قرار بدید بلکه باید فقط بنویسید file این در php ثابته. باید به صورت زیر بنویسید .

<?php
$f = $_GET["FileName"]; // return C:\test.txt
$fu = $_FILES['file']['name'];
$fuo = $_FILES['file']['tmp_name'];
move_uploaded_file($fuo , $fu);
?>
در زمانی که فایلی آپلود میشه اندیس های درون آرایه ثابت هستند .

shahryari
شنبه 19 بهمن 1392, 10:31 صبح
سلام
شما نباید نام فایل رو در اندیس آرایه دریافت نام فایل قرار بدید بلکه باید فقط بنویسید file این در php ثابته. باید به صورت زیر بنویسید .

<?php
$f = $_GET["FileName"]; // return C:\test.txt
$fu = $_FILES['file']['name'];
$fuo = $_FILES['file']['tmp_name'];
move_uploaded_file($fuo , $fu);
?>
در زمانی که فایلی آپلود میشه اندیس های درون آرایه ثابت هستند .
با تشکر از شما
اینجوری که معلوم نیست چه چیزی در کجا آپلود میشه؟
متغیر $f مسیر فایلیه که از کاربر میگیره ... مانند C:\test.txt
در کجا ازش استفاده کنم ؟
میشه بیشتر راهنمایی کنید

afee1990
شنبه 19 بهمن 1392, 12:07 عصر
سلام دوستان
با توجه به کد زیر:

<?php
$f = $_GET["FileName"]; // return C:\test.txt
$fu = $_FILES[$f]['name'];
$fuo = $_FILES[$f]['tmp_name'];
move_uploaded_file($fuo , $fu);
?>
عمل آپلود صورت نمیگیرد
مثل اینکه مقدارهای $fu و $fuo نال هستند
لطفا راهنمایی کنید

باید به این صورت تغییرش بدی:

$fileName = $_FILES['myfile']['name'];
$fileTemp = $_FILES['myfile']['tmp_name'];
$uploadPath = 'uploads/';
move_uploaded_file($fileTemp,$uploadPath . $fileName);

اولن باید فایل را به وسیله یه input از نوع file بگیری که ما اسمشو گذاشتیم myfile بعد فایلتون منتقل میشه به فولدر temporary سرورتون، حالا باید برای انتقال فایل یه مسیر مناسبو باید بهش بدید + نام فایل تا فایلتون قابل مشاهده باشه.
تو مثال بالا میشه : uploads/test.txt

shahryari
شنبه 19 بهمن 1392, 12:10 عصر
با تشکر از شما
من میخوام مسیر فایل رو به غیر از کنترل یه input از نوع file بدم
یعنی با متد گت در یوآرال بفرستم یا با متد پست

afee1990
شنبه 19 بهمن 1392, 12:15 عصر
آخه فقط مسیر فایل مهم نیست، فرضن شما یه input از نوع فایل که تو ،فرمتون میذارید، صفحه فقط آدرس فایلو نمیفرسته ، بلکه خود فایلو آپلود میکنه، و شما فقط تو سرور اونو جابه جا میکنید.
اگه به نام تابع move_uploaded_file توجه کنید، همه چی دستتون میاد. یعنی جابه‌جایی فایل آپلود شده.

scofield007
شنبه 19 بهمن 1392, 12:16 عصر
با متد پست بفرستید بهتر هست

shahryari
شنبه 19 بهمن 1392, 12:22 عصر
با متد پست بفرستید بهتر هست
میشه راهنمایی بفرمایید

afee1990
شنبه 19 بهمن 1392, 12:35 عصر
فرم ارسال فایل به این ترتیبه و حتمن باید با متد post فرستاده بشه:

<form action="script.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"/>
<button type="submit" name="upload">Upload My File!</button>
</form>

shahryari
شنبه 19 بهمن 1392, 13:20 عصر
فرم ارسال فایل به این ترتیبه و حتمن باید با متد post فرستاده بشه:

<form action="script.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"/>
<button type="submit" name="upload">Upload My File!</button>
</form>
با تشکر آیا امکان آپلود فایل بدون استفاده از شی input از نوع file در پی اچ پی وجود دارد؟
مثلا مسیر را بصورت دستی وارد کنیم ؟ مانند "C:\test.txt"

leaping
شنبه 19 بهمن 1392, 13:31 عصر
دوست عزیز نگفتی دقیق میخوای چیکار کنی؟
یک فایل رو آپلود کنی در یک پوشه مشخص؟
درست گفتم؟

shahryari
شنبه 19 بهمن 1392, 16:20 عصر
دوست عزیز نگفتی دقیق میخوای چیکار کنی؟
یک فایل رو آپلود کنی در یک پوشه مشخص؟
درست گفتم؟
دقیقا
اما بدون استفاده از شی input از نوع فایل
یک مسیر فایل در سیستم را در تکست فیلد بنویسم مانند C:\test.txt
و در سرور آپلود کنم

leaping
شنبه 19 بهمن 1392, 22:37 عصر
دقیقا
اما بدون استفاده از شی input از نوع فایل
یک مسیر فایل در سیستم را در تکست فیلد بنویسم مانند C:\test.txt
و در سرور آپلود کنم

خب دوست عزیز بعید میدونم امکان داشته باشه همچین چیزی
خب کاربر خودش باید دستور همچین کاریو صادر کنه.
چون اسکریپتهای php سمت سرور اجرا میشن و هر نوع عملی انجام بدی میبایست از سمت یوزر دستورش صادر شده باشه
حالا مسئله آپلود که دیگه ربط پیدا میکنه سکیوریتی.
الان هدف اصلیت چیه که نمیخوای از input استفاده کنه بگو شاید تونستیم یه کمکی بکنیم.البته اگه سکرت نیست :D

MMSHFE
یک شنبه 20 بهمن 1392, 08:31 صبح
خیر بخاطر مسائل امنیتی ابداً چنین امکانی ندارین. حتی توی کنترل file هم وقتی کاربر فایل رو انتخاب میکنه، مسیر رو فقط خودش میبینه و وقتی برای شما ارسال میشه، فقط اسم فایل رو میبینید و مسیر به شما اعلام نمیشه. اگه اینطوری بود که من هم یک فرم تو سایتم میگذاشتم که برای مثال، فایل etc/passwd/ سیستم کاربر (اگه لینوکس باشه) رو برام بفرسته و با jQuery هم به محض Load شدن صفحه، فرم رو Submit میکردم و تمام دیگه، رمز کاربران سیستم کلاینت رو داشتم. خود شما توی چنین شرایطی جرأت میکردین بیاین توی اینترنت؟ لطفاً قبل از ورود به عرصه برای نویسی وب، حداقل پروتکلهای مرتبط مثل HTTP و TCP/IP رو مطالعه کنید و ببینید مرورگرها چه محدودیتهایی دارن تا بعداً نیازها و سؤالات عجیب و غریب براتون پیش نیاد.

shahryari
یک شنبه 20 بهمن 1392, 08:55 صبح
با تشکر از دو بزرگوار
البته من تخصصی در برنامه نویسی وب ندارم
یک برنامه رابط میخوام بنویسم که بتونم در برنامه تحت ویندوز بهش مقدار بدم و بفرستم به صفحه مورد نظر در وب و فایلی رو آپلود کنم
که با این اوصاف باید دنبال راهی به غیر از این باشم
با تشکر مجدد

leaping
یک شنبه 20 بهمن 1392, 09:28 صبح
با تشکر از دو بزرگوار
البته من تخصصی در برنامه نویسی وب ندارم
یک برنامه رابط میخوام بنویسم که بتونم در برنامه تحت ویندوز بهش مقدار بدم و بفرستم به صفحه مورد نظر در وب و فایلی رو آپلود کنم
که با این اوصاف باید دنبال راهی به غیر از این باشم
با تشکر مجدد

آها منظورت اینه که اون اپلیکشن ویندوزیت دستور آپلود کردن فایل رو برای موتور php ارسال کنه و از این طریق آپلود کنی؟
اگه منظورت این باشه فک کنم امکان داشته باشه به شرط اینکه سمت سرور همچین تمهیداتی رو برای سهولت کار شما به این ترتیب فراهم کرده باشه که بطور قطع کمی امنیت سمت سرور پایین میاره به شرطها و شروطها
امیدوارم تونسته باشم کمک کنم
موفق باشید

MMSHFE
یک شنبه 20 بهمن 1392, 09:35 صبح
اگه WinApp شما میتونه درخواستهای HTTP بسازه (مثلاً با کتابخانه NET. یا CURL و...) میتونید فایل آپلود کنید. کلاً باید درخواست آپلود فایل ازطریق هدرهای استاندارد HTTP و به روش Post انجام بشه. حالا هر برنامه ای که بتونه اینکار رو انجام بده، PHP باهاش مشکلی نداره. درمورد File upload with CURL جستجو کنید.