PDA

View Full Version : سوال: کپی کردن فایل از طریق PHP



alismith
شنبه 12 مرداد 1392, 19:38 عصر
سلام

روش های زیادی تو php برای کپی کردن فایل از مسیری به مسیر دیگری (جدید) وجود داره،
مثلا با استفاده از function های زیر :
copy
exec
fwrite
file_put_contents

اما مشکل اینجا هستش که برای من این function ها در داخل شبکه جواب ندادن، مثلا فرض کنید شما با استفاده از fwrite فایلی از درایو C را در درایو D کپی می کنید و به درستی این عمل انجام میشه و نام فایلی که این کارو انجام میده copy.php باشه، حالا فرض کنید یک شبکه دارید با 10تا کلاینت، وقتی از کلاینت ها اون فایل رو فراخوانی می کنید میبینید که عمل کپی در درایو سیستم خودتون انجام میشه نه اون کلاینت، می خواستم بدونم روش کپی کردن فایل از یک پی سی به پی سی دیگه در شبکه local از طریق php چی هستش؟


باتشکر

Unique
یک شنبه 13 مرداد 1392, 01:48 صبح
خوب اگه shared شد هباشن یا دسترسی از طریق مسیر دهی شبکه یا net use روی یک drive مجازی باشه ! خیلی راحت میشه این کار را کرد ! و میتونید از تابع rename استفاده کنید و نیازی به fwrite واین بساط ها نیست !

alismith
یک شنبه 13 مرداد 1392, 07:40 صبح
خوب اگه shared شد هباشن یا دسترسی از طریق مسیر دهی شبکه یا net use روی یک drive مجازی باشه ! خیلی راحت میشه این کار را کرد ! و میتونید از تابع rename استفاده کنید و نیازی به fwrite واین بساط ها نیست !

سلام دوست عزیز

متوجه نشدم منظورت از rename چی بود، می تونی کمی بیشتر توضیح بدی؟ منظورم طرز کار این function نیست، لطفا درباره کپی کردن فایل از یک پی سی به پی سی دیگه در شبکه از طریق php توضیح بده

ویرایش1: در شبکه درایو D کلاینت ها به هم share شدن (فقط کلاینت ها)

با تشکر

Unique
دوشنبه 14 مرداد 1392, 01:00 صبح
متوجه نشدم منظورت از rename چی بود،
شرمنده ُ فکر کردم میخوای move کنی ، برای move کردن یک فایل توی php میتونی از تابع rename استفاده کنی و برای کپی کردن هم copy جواب میده ! هر دوتاشون ازت destination میگیرین که یک path یا Url هستش ! حالا شما مسیر را میتونی یک مسیر unc بدی (گفتم Unc چون احتمال زیاد داری از ویندوز استفاده میکنی). حالا مشکل چیه ؟ امتحان کردی به خطا خوردی ؟

alismith
دوشنبه 14 مرداد 1392, 12:36 عصر
میتونی یک مسیر unc بدی

درسته ولی فایل کپی نمیشه، من مسیر مقصد در دستور copy به این شکل میزنم ببینید درسته :

"file://".$_SERVER['REMOTE_ADDR']."/".$xpath
یا

"\\\\".$_SERVER['REMOTE_ADDR']."\\".$xpath


با تشکر

Reza1607
دوشنبه 14 مرداد 1392, 13:10 عصر
php سمت سرور هست و فکر نکنم بتونی باهاش فایل های کلاینت رو بخونی چه برسه که بخوای تغییر بدی

alismith
دوشنبه 14 مرداد 1392, 16:00 عصر
php سمت سرور هست و فکر نکنم بتونی باهاش فایل های کلاینت رو بخونی چه برسه که بخوای تغییر بدی

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

Unique
سه شنبه 15 مرداد 1392, 01:09 صبح
php سمت سرور هست و فکر نکنم بتونی باهاش فایل های کلاینت رو بخونی چه برسه که بخوای تغییر بدی
نه منظورشون این نیست ! فرض کن server شما با یک سیستم دیگه شبکه شده و میخوای فایل را کپی کنی توی دایرکتوری shared اون سیستمه از روی سرور ! اصلا بحث local نیست ! اینجا local ایشون سرور خودشونه !

متاسافانه الان دسترسی به ویندوز ندارم برات تست کنم ! اما داری مسیر unc را اشتباه میدی ! اصلا یه چیزی ! بیا با دستور زیر یک درایو به نام x بساز ! روی سرور بساز :

net use x: \\server\shared_drive

حالا مسیر دهی را از درایو x انجام بده ! مثل اینکه روی سیستم خودته !

Reza1607
سه شنبه 15 مرداد 1392, 12:01 عصر
این چه حرفیه؟ کلاینت در اینجا به معنی پی سی هستش و حتما روشی برای نتقال فایل بین پی سی های یک شبکه از طریق php وجود داره

با php نمی تونید فایلی رو از روی یک سیستم به سیستم دیگه ( به غیر از سرور ) انتقال بدید چون اصلا php نمی تونه اطلاعاتی رو از هارد کاربر بگیره چون اگه این جوری بود دیگه به php نمی گفتن زبان برنامه نویسی سمت سرور

راهی که هست این هست که فایلی که قرار انتقال داده بشه روی بستری قرار بگیره که php توانایی خوندن اون رو داشته و بعد با استفاده از دستور copy فایل از روی سیستم مبدا خونده بشه و در سرور ذخیره بشه و بعد سیستم مقصد فایل رو دانلود کنه

البته این احتمال هم وجود داره با استفاده از یکسری ابزارها ( حالا می خواد اسکریپت باشه یا یک نرم افزار ) این مورد رو شبیه سازی کنند که من اطلاعی ندارم

Reza1607
چهارشنبه 16 مرداد 1392, 09:29 صبح
یک راه که به ذهن رسید این هست که از ftp استفاده کنید