PDA

View Full Version : ذخیره کردن فایل از پایگاه داده mysql در سیستم



!!Network!!
جمعه 27 فروردین 1389, 20:40 عصر
سلام

من با استفاده از این لینک یک فایل wav را در پایگاه داده Mysql ذخیره کردم .
http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx

حالا نیاز دارم همین فایلو یا فایل های دیگری رو که در Database ذخیره میشه به یک فولد مثلا /tmp/files/ منتقل کنم ولی نمی تونم مثالی در اینترنت پیدا کنم . و همه مثال ها مثلا یک صفحه download.php رو مثال زده که لینک فایل ها رو میده و وقتی کاربر روی اون کلیک می کنه میتونه فایل را دانلود کنه ولی من اینو می خوام که خودم بتونم تو کدم فایل را با Select زدن انتخاب کنم و در یک فولدر کپی کنم ؟ آیا راهی برای این کار در Php وجود داره ؟

پیشاپیش ممنوم

امیـرحسین
جمعه 27 فروردین 1389, 21:19 عصر
فایل شامل محتوای فایل و هدر برای مشخص کردن اطلاعات فایل هست.
اگر هدر فایل رو هم در دیتابیس ذخیره کرده باشید، مافیه محتوای فایل رو از دیتابیس بگیرید، یک فایل جدید بسازید و اون محتویات رو درش قرار بدید.
در غیر این صورت باید هدرها رو دستی به ابتدای محتویات اضافه کنید.
این کار رو میشه مثلا توسط تابع file_put_contents (http://ir.php.net/manual/en/function.file-put-contents.php) خیلی ساده انجام داد.

!!Network!!
شنبه 28 فروردین 1389, 15:45 عصر
$id=6;

$query = "SELECT askfilename, askfiletype, askfilesize, askfile " .
"FROM uploadtb WHERE id = '$id'";

$result = mysql_query($query) or die('Error, query failed');

list($askfilename,$askfiletype,$askfilesize,$askfi le)=mysql_fetch_array($result);

if( file_put_contents( 'temp/ans/'.$askfilename, $askfile ) )
{
echo 'msg=success&wavFile='.$askfilename;
}
else
{

echo 'msg=error';
}

من محتویات فایل را بایک Select توی متغیر askfile ریختم و همانطور که شما گفتید با استفاده از file_put_contents می خوام اون فایل رو که اسمش 20100317-223927-100.wav هست را در مسیر /tmp/ans ذخیره کنم ولی این ایراد را از من می گیره ؟


PHP Warning: file_put_contents(temp/ans/20100317-223927-100.wav): failed to open stream: No such file or directory in /var/lib/asterisk/agi-bin/download.php on line 22

در توضیحات file_put_contetnts نوشته بود که اگر چنین فایلی در مسیر مشخص شده موجود نباشه خودش اونو ایجاد می کنه ولی در اینجا اعمال نمیشه . دوستان می تونن راهنمایی کنند که مشکل کد من از کجاس ؟

امیـرحسین
شنبه 28 فروردین 1389, 23:34 عصر
ساختن فایل یکم محدودیت درش هست. سعی کنید دستی این کار رو بکنید توسط تابع touch.
من حدس می زنم سرور جلوی ساخته شدن فایل رو میگیره.

!!Network!!
یک شنبه 29 فروردین 1389, 11:56 صبح
ممنونم - مشکل از permisson فولدر بود که chmod 777 مشکل را حل کرد .