HttAccess

mohan21

Member
سلام

من برای مدیریت آپلود فایل ها تمامی فایل ها را در مسیر www.cxv.com/upload با یک نام جدید ذخیره میکنم و آدرس مجازی آن را به کاربر نمایش میدهم مانند آدرس زیر :::

کد:
www.cxv.com/upload/FolderName1/FolderName2/FolderName3/124yytrhtf/achoo (1) 1600 m.JPG

آدرس اصلی تصویر این است :::

کد:
www.cxv.com/upload/431234564531234756.JPG

خوب حالا میخوام وقتی آدرس مجازی وارد شد، تصویر نمایش داده شود ....

و همچنین در تگها مسیر تصویر به این صورت بوده نمایش داده شود ...

توضیح :: هر فایل برای ذخیره شدن در فولدر upload یک نام جدید مانند 32163541254 میگیرد و نام اصلی فایل که ابتدا داشته در بانک ذخیره می گردد ...(همانطور که در آدرس مجازی فایل مشاهده می کنید)
 

ziXet

مدیر انجمن PHP/MYSQL
چرا داخل فولدر upload دوباره فولدر وجود داره؟! این کارو سخت میکنه
شما برای اینکه آدرس مجازی بدی باید مثلا این کارو بکنی!
یه اسکریپت view.php میسازی و یک متغیر که اسم فایل هست رو با متد get میگیره و نمایش میده!
حالا با htaccess میشه آدرسش رو عوض کرد مثلا اینطوری:
کد:
RewriteRule upload/(.+) view.php?img_code=$1
 

mohan21

Member
چرا داخل فولدر upload دوباره فولدر وجود داره؟

مسيري هست که کاربر ايجاد ميکنه و بطور واقعي چنين مسيري وجود نداره تمامي فايلها در فولدري به نام upload قرار ميگيرند ...
همونطوري که بالا گفتم ...

کد شما رو قرار دادم اما 404 ميده ....

يعني عمل نميکنه ....

من ميخوام مثل persiangig عمل کنم ....
 

mohan21

Member
ممنون از شما دوست گرام ....

من کد زیر رو در فایل httaccess قرار دادم :::

کد:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule upload/(.+) view.php
تگ img رو در صفحه ایی با آدرس زیر داریم :::

کد:
<img src="www.cxv.com/upload/achoo (1) 1600 m.JPG" />
فایل view.php هم بصورت زیر هست :::

کد:
echo "www.cxv.com/upload/431234564531234756.JPG" ;
که چیزی نمایش داده نمیشه ...

چرا ؟ مشکل از کجاست ؟؟؟؟

مگر کد فایل httaccess آدرس دریافتی از فایل view.php رو با آدرس تگ img جابجا نمیکنه ؟؟؟
 
آخرین ویرایش:

ziXet

مدیر انجمن PHP/MYSQL
همچنان منتظر .......
wow !
جی کار کردی؟!!
این کارو کن:
کد:
RewriteRule upload/(.+) view.php?id=$1
بعد تو view.php هم نباید اینجوری echo کنی!
اگه عکست تو دیتابیس هست باید اول هدرهای عکس رو بفرستی و بعد سورس عکس رو از دیتابیس بخونی و جاپ کنی.
اگه هم عکس رو روی هاست داری باید با fopen و fread با مد binary بخونی و چاپش کنی! البته باید هدرهای عکس رو هم درست بفرستی
به نظرم بهتره یه tutorial در این مورد بخونی

موفق باشید
 

mohan21

Member
دستتون درد نکنه ...

فعلاً تا اینجا حل شد .... تصویر نمایش داده میشه ....

به اینصورت :::

PHP:
        header ('content-Type: image/jpeg') ;

        $Address = "upload/menu_top.jpg" ;

        $Handle = fopen ($Address , "rb") ;
        $Pic    = fread ($Handle , filesize ($Address)) ;

        echo $Pic ;

        fclose ($Handle) ;

کد httaccess :::

کد:
RewriteEngine On

RewriteRule upload/(.+) view.php

خوب این برای فایل های تصویری از نوع jpeg بوده ....

میخوام برای تمامی فایل ها (rar,pdf,txt, ...) عمل کنه چطور باید انجام بدم ؟؟؟
 

ziXet

مدیر انجمن PHP/MYSQL
دستتون درد نکنه ...

فعلاً تا اینجا حل شد .... تصویر نمایش داده میشه ....

به اینصورت :::

PHP:
        header ('content-Type: image/jpeg') ;

        $Address = "upload/menu_top.jpg" ;

        $Handle = fopen ($Address , "rb") ;
        $Pic    = fread ($Handle , filesize ($Address)) ;

        echo $Pic ;

        fclose ($Handle) ;

کد httaccess :::

کد:
RewriteEngine On

RewriteRule upload/(.+) view.php

خوب این برای فایل های تصویری از نوع jpeg بوده ....

میخوام برای تمامی فایل ها (rar,pdf,txt, ...) عمل کنه چطور باید انجام بدم ؟؟؟
برای اکستنشن هم باید اینکارو کنی:
کد:
RewriteRule upload/(.+)\.(.+) view.php?id=$1&ext=$2
با این کار id عکس و اکستنشن(فرمت) عکس یا هر فایل دیگه به view.php با متد گت ارسال میشه.
 

hidensoft

Member
برای اکستنشن هم باید اینکارو کنی:
کد:

RewriteRule upload/(.+)\.(.+) view.php?id=$1&ext=$2

با این کار id عکس و اکستنشن(فرمت) عکس یا هر فایل دیگه به view.php با متد گت ارسال میشه.
لازم نیست این کار. مگه ID ندارید ؟ زمانی که فایل رو ذخیره می کنی نوع اون رو هم به همراه اطلاعات دیگه در دیتابیس ذخیره کنید
زمان نمایش هم هدر ور مطابق با نوع عکس قرار بدید ، فکر می کنم اگر همون JPEG بزارید برای دیگر نوع فایل ها هم جواب بده.

می تونی از این هم استفاده کنی
PHP:
<?php
echo mime_content_type('php.gif') . "\n"; // image/gif
?>
 

mohan21

Member
با تشکر ....

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

PHP:
 $Address = "upload/menu_top.jpg" ;

PHP:
             echo mime_content_type($Address);
چیزی نمایش داده نمیشه ...

PHP:
             print_r(get_headers("http://localhost/SITE/MyCms/upload/menu_top.jpg", 1));
زمان زیادی طول میکشه و آخرش هم خطا زمانی میده ...


PHP:
             $finfo = finfo_open(FILEINFO_MIME, "upload/");
             
             $filename = "upload/menu_top.jpg";
             echo finfo_file($finfo, $filename);
 
             finfo_close($finfo);
این هم این خطا رو میده ....
Fatal error: Call to undefined function finfo_open() in c:\wamp\www\SITE\MyCms\view.php on line 46
 

hidensoft

Member
چیزی نمایش داده نمیشه ...
یه نگاهی به منوال می انداختی اینو می دیدی
کد:
Warning

This function has been deprecated as the PECL extension Fileinfo provides the same functionality (and more) in a much cleaner way.

کد:
Requirements
 Before PHP 5.3.0, the magic_open library is needed to build this extension. 


Installation
This extension is enabled by default as of PHP 5.3.0. Before this time, fileinfo was a PECL extension but is no longer maintained there.



Runtime Configuration
This extension has no configuration directives defined in php.ini.



Resource Types
There is one resource used in Fileinfo extension: a magic database descriptor returned by[URL="http://ir.php.net/manual/en/function.finfo-open.php"] finfo_open()[/URL].
 

mohan21

Member
نمیدونم چکار کنم ....

php.ini رو هم دستکاری کردم اما اثری نداشت .....

میشه به زبان فارسی راهنمایی کنید ؟؟؟؟؟
 

hidensoft

Member
شما باید PECL رو نصب کنید و پکیج FileInfo رو هم نصب کنید. باید کتابخانه magic_open رو هم نصب کنید.
از خیرش بگذری بهتره. همون بهتره که شما زمان آپلود فایل type اون رو از FILE_$ برداری.
 

mohan21

Member
سلام

آیا در Httaccess میشه شرط داشت ؟؟

من آدرسی بصورت زیر دارم :::

http://localhost/SITE/MyCms/Fa/category/1/product.html

یا

http://localhost/SITE/MyCms/category/1/product.html

و کد Httaccess :::

کد:
RewriteRule (.+)/category/(.+) index.php?OptionLanguage=$1&CatPath=$2
که برای آدرس دومی بدلیل نبود مقداری قبل از category صفحه خطا نمایش داده میشه ...

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

کد:
 RewriteRule category/(.+) index.php?CatPath=$1
حال میخوام اگر کد Httaccess اولی کامل نبود، دومی اجرا بشه ...

چطور ؟؟؟
 

H05531N

Member
لازم نیست این کار. مگه ID ندارید ؟ زمانی که فایل رو ذخیره می کنی نوع اون رو هم به همراه اطلاعات دیگه در دیتابیس ذخیره کنید
زمان نمایش هم هدر ور مطابق با نوع عکس قرار بدید ، فکر می کنم اگر همون JPEG بزارید برای دیگر نوع فایل ها هم جواب بده.

می تونی از این هم استفاده کنی
PHP:
<?php
echo mime_content_type('php.gif') . "\n"; // image/gif
?>

چرا از این روش که hidensoft گفت استفاده نمی کنی ؟ راحت ترین کار برات همینه
 

جدیدترین ارسال ها

بالا