مهم | ارسال فایل از طریق بازی به سرور
#11
قابلیت ارسال فایل به صورت مستقیم از طریق AJAX نیز به پلاگین افزوده شد:
https://www.dropbox.com/s/3v98ajaamdfyan3/blob.zip?dl=1

یعنی دیگه حتّی نیازی نیست به base64 تبدیل کنید و می‌تونید به صورت باینری فایل رو ارسال کنید (در قالب raw body).
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: shaygaaan ، ghasem ، babak ، amin hosseini
#12
(1395/12/10، 01:40 عصر)Mojtaba نوشته است: قابلیت ارسال فایل به صورت مستقیم از طریق AJAX نیز به پلاگین افزوده شد:
https://www.dropbox.com/s/3v98ajaamdfyan3/blob.zip?dl=1

یعنی دیگه حتّی نیازی نیست به base64 تبدیل کنید و می‌تونید به صورت باینری فایل رو ارسال کنید (در قالب raw body).

عالیه ولی باز هم روش کار کنید چون خیلی کاربرد داره
  پاسخ


 سپاس شده توسط:
#13

نقل قول: به صورت باینری فایل رو ارسال کنید (در قالب raw body).
 این رو نمیفهمم منظورتون چیه ؟؟
بعد از طرف هاست و وب چگونه دریافت و خونده میشه فایل ؟؟؟
مثلا ما یک فایل .zip داریم همین توی سرور آپلود میشه ؟؟
در قسمت کد نویسی سرور چگونه باید عمل کنیم ؟؟؟
اگه میشه یک سورس باری مثال قرار بدید ممنون
  پاسخ


 سپاس شده توسط:
#14
(1395/12/10، 03:10 عصر)erfan002pooya نوشته است:
نقل قول: به صورت باینری فایل رو ارسال کنید (در قالب raw body).
 این رو نمیفهمم منظورتون چیه ؟؟
بعد از طرف هاست و وب چگونه دریافت و خونده میشه فایل ؟؟؟
مثلا ما یک فایل .zip داریم همین توی سرور آپلود میشه ؟؟
در قسمت کد نویسی سرور چگونه باید عمل کنیم ؟؟؟
اگه میشه یک سورس باری مثال قرار بدید ممنون

بله، آپلود می‌شه دیگه
من اینو با Node نوشتم که به این صورت خونده می‌شه (در این مثال فایل ارسال شده رو در فایلی به اسم data.png ذخیره می‌کنه):
کد:
const http = require('http')
   , fs = require('fs')

const server = http.createServer((req, res) => {
   let stream = fs.createWriteStream('data.png')
   req.pipe(stream)
   res.end('OK')
})
server.listen(9090)

معادل این مورد در PHP یا زبان‌های دیگه رو هم می‌تونید سرچ کنید، مثلاً من برای PHP که سرچ کردم به این رسیدم:

کد:
<?php
copy('php://input', './data.png');
echo "OK";
?>
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: ghasem ، erfan002pooya ، shazde
#15
(1395/12/10، 11:26 عصر)Mojtaba نوشته است: بله، آپلود می‌شه دیگه
من اینو با Node نوشتم که به این صورت خونده می‌شه (در این مثال فایل ارسال شده رو در فایلی به اسم data.png ذخیره می‌کنه):
کد:
const http = require('http')
   , fs = require('fs')

const server = http.createServer((req, res) => {
   let stream = fs.createWriteStream('data.png')
   req.pipe(stream)
   res.end('OK')
})
server.listen(9090)

معادل این مورد در PHP یا زبان‌های دیگه رو هم می‌تونید سرچ کنید، مثلاً من برای PHP که سرچ کردم به این‌ها رسیدم:

PHP: php:// - Manual
و
rest - How to get body of a POST in php? - Stack Overflow

میشه یک سورس هم از داخل خوده کانستراکت بدید که چطور پیادش کنیم ؟؟؟
  پاسخ


 سپاس شده توسط:
#16
سلام. بله، بفرمایید:

از اون جایی که اکثراً با PHP کار می‌کنند، من نمونه کد PHP رو می‌ذارم فقط.

در سورس اوّل از روش ارسال مستقیم فایل استفاده شده است:
https://www.dropbox.com/s/e1a6ojdidmfpek....capx?dl=1

فایل upload.php:
کد:
<?php
header('Access-Control-Allow-Origin: *');
copy('php://input', './data.png');
echo 'ok';
?>

در سورس دوم از base64 استفاده شده (ابتدا فایل ورودی توسّط base64 انکد می‌شود یعنی به متن تبدیل می‌شود و سپس آن را ارسال می‌کنیم):
https://www.dropbox.com/s/aqrg2081bigwiq....capx?dl=1

فایل upload_base64.php
کد:
<?php
header('Access-Control-Allow-Origin: *');
copy($_POST['my_file'], './data.png');
echo 'ok';
?>

در این‌ نمونه کدها (در هر دو مورد) فایلی که توسّط سرور دریافت شده در کنار خود فایل PHP در یک فایل به اسم data.png ذخیره می‌شود. البته من این طور در نظر گرفتم که فایل ارسالی یک عکس png هست، ولی هر نوع فایلی رو با هر فرمتی که داشته باشه با این روش می‌تونید ارسال کنید.
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط: mahdi_R8095 ، shazde ، shaygaaan ، erfan002pooya ، vng
#17
سلام
آقا مجتبی من سورس ش  رو برای نود هم ساختم اگه اشکالی نداره:
سورس (با استفاده از کدی که آقا مجتبی قرار دادند)
غایب
  پاسخ


 سپاس شده توسط: erfan002pooya ، vng
#18
(1395/12/12، 01:05 صبح)Mojtaba نوشته است: سلام. بله، بفرمایید:

از اون جایی که اکثراً با PHP کار می‌کنند، من نمونه کد PHP رو می‌ذارم فقط.

در سورس اوّل از روش ارسال مستقیم فایل استفاده شده است:
https://www.dropbox.com/s/e1a6ojdidmfpek....capx?dl=1

فایل upload.php:
کد:
<?php
header('Access-Control-Allow-Origin: *');
copy('php://input', './data.png');
echo 'ok';
?>

در سورس دوم از base64 استفاده شده (ابتدا فایل ورودی توسّط base64 انکد می‌شود یعنی به متن تبدیل می‌شود و سپس آن را ارسال می‌کنیم):
https://www.dropbox.com/s/aqrg2081bigwiq....capx?dl=1

فایل upload_base64.php
کد:
<?php
header('Access-Control-Allow-Origin: *');
copy($_POST['my_file'], './data.png');
echo 'ok';
?>

در این‌ نمونه کدها (در هر دو مورد) فایلی که توسّط سرور دریافت شده در کنار خود فایل PHP در یک فایل به اسم data.png ذخیره می‌شود. البته من این طور در نظر گرفتم که فایل ارسالی یک عکس png هست، ولی هر نوع فایلی رو با هر فرمتی که داشته باشه با این روش می‌تونید ارسال کنید.

واقعا عالی بود آقا مجتبی فقط چند تا سوال :
 الان این فایل هارو آپلود میکنیم فایل جدیدی ساخته نمیشه فقط data تغییر میکنه میخواستم اگه میشه مثلا اگه یکی دیگه هم آپلود کرد بشه data2 بعد یک نکته دیگه اگه بخوایم از قابلیت مولتی ( انتخاب چند مورد ) پشتیبانی کنه باید چکار کنید ( کد پی اچ پی رو چطور ادیت کنم ) و یک چیز دیگر شاید طرف فقط فایلهاش عکس نباشه فشرده باشه یا ...

خیلی ممنون میشم کمکم کنی  4


(1395/12/12، 09:42 صبح)shaygaaan نوشته است: سلام
آقا مجتبی من سورس ش  رو برای نود هم ساختم اگه اشکالی نداره:
سورس (با استفاده از کدی که آقا مجتبی قرار دادند)

از شما هم ممنونم  41
  پاسخ


 سپاس شده توسط:
#19
(1395/12/12، 12:47 عصر)erfan002pooya نوشته است: واقعا عالی بود آقا مجتبی فقط چند تا سوال :
 الان این فایل هارو آپلود میکنیم فایل جدیدی ساخته نمیشه فقط data تغییر میکنه میخواستم اگه میشه مثلا اگه یکی دیگه هم آپلود کرد بشه data2 بعد یک نکته دیگه اگه بخوایم از قابلیت مولتی ( انتخاب چند مورد ) پشتیبانی کنه باید چکار کنید ( کد پی اچ پی رو چطور ادیت کنم ) و یک چیز دیگر شاید طرف فقط فایلهاش عکس نباشه فشرده باشه یا ...

خیلی ممنون میشم کمکم کنی  4

خوب پارامتر دوم تابع copy رو در PHP یک مقدار ثابت ندهید. مثلاً بنویسید:
کد:
<?php
header('Access-Control-Allow-Origin: *');
copy('php://input', './upload-'.$_GET['username'].'.png');
echo 'ok';
?>

و هنگام ارسال درخواست با کانستراکت مثلاً URL رو بنویسید:
کد:
"http://localhost/upload.php?username=" & URLEncode(UserName)

که مثلاً UserName یک متغیّر هست که از قبل توی کانستراکت ساختید. حالا چون یوزرنیم‌ها فرق می‌کنه و نام فایل هم وابسته به یوزرنیم شده است. به ازای هر کاربر فایل جدیدی ساخته می‌شود.

بعد منظورتون از انتخاب چندتایی چی هست؟

اگه منظورتون این هست که کاربر بتونه چند فایل رو انتخاب کنه که این قابلیت همین الآن وجود داره. در تنظیمات FileChooser گزینه‌ی Select رو بذارید روی Multiple و برای دسترسی به فایل‌های مختلف در اکشن‌ها از index استفاده کنید (مثلا ایندکس صفر یعنی اوّلین فایل، ایندکس یک یعنی دومین فایل و...)

اگه منظورتون ارسال درخواست به صورت multipart هست، می‌تونید به جاش از همون انکدینگ base64 استفاده کنید. چون الآن واقعاً ایده‌ای ندارم که چه اکشن‌ها و ایونت‌هایی برای این کار براش قرار بدم. اگر شما ایده‌ای دارید برای این کار خوشحال می‌شم که بدونم تا قابلیّت multipart رو به این افزونه اضافه کنم.
معجزات طبیعت هایی هستند که با آن‌ها مأنوس نشده‌ایم
و طبیعت معجزه‌ایست که با آن انس گرفته‌ایم
علی صفایی حائری
  پاسخ


 سپاس شده توسط:
#20
اول از همه باز هم از آقا مجتبی تشکر میکنم بابت کمکشون و افزونه ای که ساختن  1
-------------------------------------------------------------------
خوب من یکم روش کار کردم الان این سورس جدید کار های که انجام میده :
1-انتخاب فایل توسط شما
2-مشخص شدن نام و فرمت فایل پس از انتخاب
3- انتخاب گزینه ارسال برای آپلود فایل
4- کپی فایل شما به پوشه موردنظر شما در سرور ( اسم پوشه از داخل سورس انتخاب میشه و درصورت نبودن پوشه اون رو میسازه )
و حالا هر فایلی با هر فرمتی که آپلود کنید توی پوشه مورد نظرتون ذخیره میشه
یک نکته مهم : اینکه فایل نباید دارای کاراکتر "." باشد !!! مگرنه همش میریزه بهم !!!

کد php : (داخل فایل هست )
کد:
<?php

header('Access-Control-Allow-Origin: *');

if (file_exists($_GET['folder_name'])) {
if (!file_exists($_GET['file_name'].'.'.$_GET['file_type'])) {
copy('php://input', './'.$_GET['folder_name'].'/'.$_GET['file_name'].'.'.$_GET['file_type']);
echo 'ok';
}}
if (!file_exists($_GET['folder_name'])) {
mkdir($_GET['folder_name']);
copy('php://input', './'.$_GET['folder_name'].'/'.$_GET['file_name'].'.'.$_GET['file_type']);
echo 'ok';
}

?>

ولی این رو بگم که من اینو همین طوری نوشتم ولی جواب میده !!!

سورس :
سورس رو دیگه خودتون دانلود کنید ببینید =>
  پاسخ


 سپاس شده توسط: M.gh ، rezamms


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information پرداخت درون برنامه مایکت کوردوا ya mahdi 0 229 1404/1/17، 05:43 عصر
آخرین ارسال: ya mahdi
  نحوه خروجی اندروید کوردوا ya mahdi 0 176 1404/1/11، 04:06 عصر
آخرین ارسال: ya mahdi
Wink حل شده مقادير لازم در environment variable ᔕinaᗪehghani 24 11,595 1403/10/23، 12:10 صبح
آخرین ارسال: Tggi
  تپسل .....فروشگاه Hamidreza 3 1,932 1403/10/22، 11:57 عصر
آخرین ارسال: Tggi
  خروجی اندروید با Intel xdk ya mahdi 0 130 1403/8/25، 02:08 عصر
آخرین ارسال: ya mahdi

پرش به انجمن: