PDA

View Full Version : سوال: کمک در باره ساخت ضمیمه



pa2ghir
دوشنبه 03 آذر 1393, 11:02 صبح
سلام ببخشید کسی میتونه به من کممک کنه من چه جوری میتونم همچین فایل بسازم در php و mysql

میخوام مثلا یک صفحه باشه در اون مثلا یک فایل پی دی اف ضمیمه کنیم و اون فایل به صورت باینری در دیتابیس ذخیره بشه
و در صفحه دوم مثلا بزنه دانلود کتاب 1 طرف روش کلیک کنه و دانلود بشه
کسی میتونه کممک کنه؟؟؟

hamedarian2009
دوشنبه 03 آذر 1393, 12:36 عصر
بهتره فایل رو در دیتابیس ذخیره نکنید بلکه داخل یه دایرکتوری ذخیره و آدرسش رو توی دیتابیس ذخیره کنید اما بهرحال این اموزش میتونه کمکتون کنه
http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx

pa2ghir
دوشنبه 03 آذر 1393, 14:45 عصر
بهتره فایل رو در دیتابیس ذخیره نکنید بلکه داخل یه دایرکتوری ذخیره و آدرسش رو توی دیتابیس ذخیره کنید اما بهرحال این اموزش میتونه کمکتون کنه
http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx

مرسی ممنون
ولی من میخوام همین کاروو کنم داخل دیتابیس انجام بدم

Unique
دوشنبه 03 آذر 1393, 15:36 عصر
من هم توصیه میکنم توی database ذخیره نکنید. مشکلاتی که در آینده براتون ممکنه به وجود بیاد زیاده و بهتره از این کار منصرف بشین.

pa2ghir
سه شنبه 04 آذر 1393, 19:32 عصر
هیچ کسی نتونست به من کمک کنه؟؟ توروخدا خیلی گیرم

hamedarian2009
سه شنبه 04 آذر 1393, 21:26 عصر
هیچ کسی نتونست به من کمک کنه؟؟ توروخدا خیلی گیرم

اموزشی که براتون گزاشتم رو مگه نگاه نکردین دقیقا چیزی که میخواهین هست دیگه چه کمکی میخوایین

pa2ghir
سه شنبه 04 آذر 1393, 23:45 عصر
نه نتونستم اجرا کنم این رو شما میتونید به صورت فایل این رو به من بدید؟

hamedarian2009
چهارشنبه 05 آذر 1393, 10:03 صبح
همینجا براتون آموزش میدم
اول یه جدول توی بانک اطلاعاتی درست میکنی تو phpmyadmin و داخل دیتابیس موردنظرت قسمت SQL اینو کپی کن و GO رو بزن جدولو میسازه اینهم کدش:


CREATE TABLE upload (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
size INT NOT NULL,
content MEDIUMBLOB NOT NULL,
PRIMARY KEY(id)
);

برای اینکه هربار میخایم به دیتابیس متصل بشیم کدشو ننویسیم یه فایل به نام config.php درست میکنیم و کدهاشو داخلش مینویسم(نکته: اطلاعات مربوط به دیتابیس شما با اطلاعات زیر فرق میکند)


<?php
$link = mysql_connect('localhost','root','123456') or die(mysql_error());
mysql_select_db('linux') or die(mysql_error());
?>

یه فایل به نام upload.php درست کنید و کدهای زیر رو داخلش قرار بده :


<?php
require_once 'config.php';
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}

$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

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

echo "<br>File $fileName uploaded<br>".PHP_EOL;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>upload form</title>
<meta charset="UTF-8" />
</head>
<body>
<form method="post" enctype="multipart/form-data">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
<h3>Book Lists</h3>
<?php
$query = "SELECT * FROM `upload`";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "Database is empty <br>";
}
else
{
$i=1;
while($row= mysql_fetch_assoc($result))
{
echo $i.'- <a href="download.php?id='.$row['id'].'">'.$row['name'].'</a><br />'.PHP_EOL;
$i++;
}
}
mysql_close($link);
?>
</body>
</html>


تا اینجا میتونی فایل رو آپلود کنی داخل دیتابیس و فایل های آپلود شده را نمایش بدی حالا واسه دانلود کافیه یه صفحه دیگه به نام download.php هم درست کنی و کدهای زیر رو داخلش قرار بدی تا بتونی با هر کلیک روی نام فایل اونو دانلود کنی


<?php
if(isset($_GET['id']))
{
// if id is set then get the file with the id from database
require_once 'config.php';

$id = intval($_GET['id']);
$query = "SELECT name, type, size, content " .
"FROM upload WHERE id = '$id'";

$result = mysql_query($query) or die('Error, query failed');
list($name, $type, $size, $content) =
mysql_fetch_array($result);

header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;

mysql_close($link);
exit;
}

?>

موفق و موید باشی

pa2ghir
شنبه 08 آذر 1393, 00:00 صبح
همینجا براتون آموزش میدم
اول یه جدول توی بانک اطلاعاتی درست میکنی تو phpmyadmin و داخل دیتابیس موردنظرت قسمت SQL اینو کپی کن و GO رو بزن جدولو میسازه اینهم کدش:


CREATE TABLE upload (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
size INT NOT NULL,
content MEDIUMBLOB NOT NULL,
PRIMARY KEY(id)
);

برای اینکه هربار میخایم به دیتابیس متصل بشیم کدشو ننویسیم یه فایل به نام config.php درست میکنیم و کدهاشو داخلش مینویسم(نکته: اطلاعات مربوط به دیتابیس شما با اطلاعات زیر فرق میکند)


<?php
$link = mysql_connect('localhost','root','123456') or die(mysql_error());
mysql_select_db('linux') or die(mysql_error());
?>

یه فایل به نام upload.php درست کنید و کدهای زیر رو داخلش قرار بده :


<?php
require_once 'config.php';
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}

$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

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

echo "<br>File $fileName uploaded<br>".PHP_EOL;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>upload form</title>
<meta charset="UTF-8" />
</head>
<body>
<form method="post" enctype="multipart/form-data">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
<h3>Book Lists</h3>
<?php
$query = "SELECT * FROM `upload`";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "Database is empty <br>";
}
else
{
$i=1;
while($row= mysql_fetch_assoc($result))
{
echo $i.'- <a href="download.php?id='.$row['id'].'">'.$row['name'].'</a><br />'.PHP_EOL;
$i++;
}
}
mysql_close($link);
?>
</body>
</html>


تا اینجا میتونی فایل رو آپلود کنی داخل دیتابیس و فایل های آپلود شده را نمایش بدی حالا واسه دانلود کافیه یه صفحه دیگه به نام download.php هم درست کنی و کدهای زیر رو داخلش قرار بدی تا بتونی با هر کلیک روی نام فایل اونو دانلود کنی


<?php
if(isset($_GET['id']))
{
// if id is set then get the file with the id from database
require_once 'config.php';

$id = intval($_GET['id']);
$query = "SELECT name, type, size, content " .
"FROM upload WHERE id = '$id'";

$result = mysql_query($query) or die('Error, query failed');
list($name, $type, $size, $content) =
mysql_fetch_array($result);

header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;

mysql_close($link);
exit;
}

?>

موفق و موید باشی
دست شما درد نکنه این الان درست شد فقط چرا صفحه دانلود همیشه سفید میاد؟؟
هیچی توش نشون داده نمیشه؟

pa2ghir
شنبه 08 آذر 1393, 00:13 صبح
من میخوام دانلود رو در یک صفحه دیگه انجام بدم نه همون صفحه

hamedarian2009
شنبه 08 آذر 1393, 10:03 صبح
من میخوام دانلود رو در یک صفحه دیگه انجام بدم نه همون صفحه

خب لینک های دانلود رو ببر تو یه صفحه این صرفا یک مثال بود شما باید خودتون هم همت کنید