получение ссылки на скачивание [php]

H2
На сайте с 07.02.2012
Offline
21
1316

Добрый вечер дорогие друзья!

Помогите пожалуйста с кодом.

У меня есть ссылка на файл с удалённого сервера, мне нужно сделать так, чтобы при клике по ссылке "получить ссылку" выполнялось вот что:

1)файл загружался на сервер

2)мне на странице выдавалась ссылка на скачивание с моего сервера

вот код загрузки файла на сервер:


$dirfile = 'file/';
ini_set('max_execution_time',1200);
$fileName= $dirfile . '123mysite.ru.txt';
$host= 'yoursite.ru/123.txt';
$fp=fopen($fileName,"w");
fclose($fp);
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $host);
$fp=fopen($fileName,"w+");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_REFERER, $host);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
ДП
На сайте с 23.11.2009
Offline
203
#1

Скачайте себе phprapidget pro и не парьтесь, если я вас правильно понял.

Вам ведь надо с удаленного сервера слить файл на ваш, а вы потом со своего к себе на комп?

H2
На сайте с 07.02.2012
Offline
21
#2
Дикий пионер:
Скачайте себе phprapidget pro и не парьтесь, если я вас правильно понял.
Вам ведь надо с удаленного сервера слить файл на ваш, а вы потом со своего к себе на комп?

Нет, мне надо по клику на ссылку, ведущую к скрипту например file_get.php, в котором выполняется:

1)загрзука файла на мой сервер с удалённого

2)вывести ссылку на загруженный файл

показать ссылку на загруженный файл

codemorgan
На сайте с 12.01.2009
Offline
48
#3

Если я правильно понял... то как-то так.. я не проверял его.. )


<?php
/**
* простейшая функция для получения содержимого сайта ее содержимым может быть код, основанный на сокетах, file_get_contents, на curl, wget .. все что угодно
@return string file_content
*/
function http_get_file($url) {

$url_stuff = parse_url($url);
$port = isset($url_stuff['port']) ? $url_stuff['port']:80;

$fp = fsockopen($url_stuff['host'], $port);

$query = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
$query .= 'Host: ' . $url_stuff['host'];
$query .= "\n\n";

fwrite($fp, $query);

while ($line = fread($fp, 1024)) {
$buffer .= $line;
}

preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
return substr($buffer, - $parts[1]);
}

<?php 

/* Начало работы скрипта */

$remoteHost = "site.com";
$remotePath = "dir";
$fileName = "downloadme.txt";

$localPath = "/var/www/public_html/downloads";
$localUrl = "http://localhost.ru/downloads/";
/**
* Забираем содержимое файла
*/
$fileContent = http_get_file($remoteHost."/".$remotePath."/".$fileName);
/**
* получаем полный путь к файлу для сохранения
*/
$fullFilePath = $localPath."/".$fileName;
/*
* Можно сделать так, если нужна папка на каждый скачанный файл
$fileDir = md5(time());
mkdir($localPath."/".$fileDir,0777);
$fullFilePath = $localPath.$localPath."/".$fileName;
*/
/**
* сохраняем файл
*/
file_put_contents($fullFilePath,$fileContent);
/**
* Генерируем ссылку
*/
$link = $localUrl.$fileName;
?>
<!-- УРА -->
<html>
<body>
<a href="<?php echo $link?>"><?php echo $link?></a>
</body>
</html>

!!!! Здесь нет проверок на права записи в папку и .т.д

!!!! Здесь нет проверки от того, что вам могут подсунуть не тот файл

!!!! Здесь нет .htaccess который нужно положить в папку чтобы содержимое папки нельзя было просмотреть, запртетить обработку php... и так далее

Надеюсь на мысль натолкнет

Верстка/PHP/Wordpress/Magento (http://codemorgan.ru/services)
CN
На сайте с 29.09.2007
Offline
155
#4

А через mod_rewrite нельзя сделать? Я так понимаю файлы на стороннем сервере вам известны.

Или скачивать на свой сервер это обязательное требование?

wwwwww
На сайте с 29.04.2011
Offline
195
#5
http23:
Нет, мне надо по клику на ссылку, ведущую к скрипту например file_get.php, в котором выполняется:
1)загрзука файла на мой сервер с удалённого
2)вывести ссылку на загруженный файл

показать ссылку на загруженный файл

Размер файла какой?

Видишь? Свободная подпись.
H2
На сайте с 07.02.2012
Offline
21
#6

спасибо всем, разобрался сам :)

кстате может знает кто, как задать максимальную длину значению переменной?

например есть:


$title = $list[1] . $list[2];

и нужно задать максимальную длинну символов значения для $title

ну чтобы $title обрезался если больше например 40 символов...

siv1987
На сайте с 02.04.2009
Offline
427
#7

substr, думаю сам разберешься

H2
На сайте с 07.02.2012
Offline
21
#8
siv1987:
substr, думаю сам разберешься

спасибо, то что надо :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий