Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Как скачать файл прикрепленный к curl (https://javascript.ru/forum/server/64113-kak-skachat-fajjl-prikreplennyjj-k-curl.html)

psiklop 20.07.2016 14:48

Как скачать файл прикрепленный к curl
 
Подскажите форумчане, не могу понять, гугл не помог
curl_exec возвращает результат, но если он очень большой скажем мегабайт, ничего не возвращает, но в заголовках это:

filename=xxxxx&disposition=attachment

но как его достать? массив count($_FILES) равен 0
устанавливал в curl CURLOPT_FILE параметр тоже не дает результат

laimas 20.07.2016 15:57

Цитата:

Сообщение от psiklop
файл прикрепленный к curl


Это как?

Скачать, значит ни о каком $_FILES речи быть не может. Все что получает cURL, находится тут = curl_exec($curl);

psiklop 20.07.2016 17:35

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

тогда получается что когда файл большой curl просто ничего не возвращает, хотя заголовки все равно возвращает, но тело пустое

что за ограничение? можно как-то увеличить

laimas 21.07.2016 02:28

Цитата:

Сообщение от psiklop
что за ограничение?

Смотрите опции. И вообще, это все продолжение издевательства на картинками с другого сервера? Зачем?

psiklop 21.07.2016 02:37

ладно фиг с ним curl, есть file_get_contents
заняться не чем, просто сделал и все
http://acepic.ru/

laimas 21.07.2016 12:58

Цитата:

Сообщение от psiklop
есть file_get_contents

Есть Апач, если речь о картинках с другого ресурса. Если "перекачивать" через себя, то все таки fopen + fread.

psiklop 21.07.2016 23:06

Как делать апач? (но у меня обычный хостинг)
зачем мне эти fopen fread, для получения файла целиком пишут использовать ее, да и проще
у меня всего одна строка сейчас
header("Content-type: image/jpeg");
echo file_get_contents($url);

laimas 21.07.2016 23:46

Цитата:

Сообщение от psiklop
Как делать апач? (но у меня обычный хостинг)

Без HTTP-сервера, а это и есть Apache или nginx, или иного, хоста вообще не будет.

Цитата:

Сообщение от psiklop
у меня всего одна строка сейчас
header("Content-type: image/jpeg");
echo file_get_contents($url);

Читайте о возможностях .htaccess, который как раз и обеспечивает Апач.

Но если все-таки насиловать серверный язык, то:

1) получать файл целиком - это читать его в память, что в данном случае совсем не требуется

2) при внушительных размерах файла чтение его в память, не только пагубно для памяти, но это еще и время, и столько же времени потребуется чтобы отдать его пользователю, то есть время операции "скачать" удваивается.

Открывайте матчасть и прочтите о fopen fread, почитайте о том как отдают файлы пользователю скриптами, это будет лучшим ответом на вопрос зачем мне эти fopen fread, для получения файла целиком пишут использовать ее .

psiklop 22.07.2016 00:04

ну про апач и .htaccess как нибудь почитаю, наверное полезно и интересно, хотя даже не читая имею сомнения, что апач и .htaccess поможет мне скачать файл из облака через api

laimas, "зачем мне эти fopen fread, для получения файла целиком пишут использовать ее" это написано в моей матчасти, наверняка у тебя другая

то что нужно сразу вся память под файл, это я понял тебя, но это фотохост, внушительных файлов там нет

почему если прочитать сразу и прочитать по кускам нужно в 2 раза меньше времени, к сожалению понять не смог

laimas 22.07.2016 00:09

Цитата:

Сообщение от psiklop
хотя даже не читая имею сомнения, что апач и .htaccess поможет мне скачать файл

Чтобы не было сомнений нужно изучать. Ищите, есть статьи и по этим вопроса, например на Хабре.

Цитата:

Сообщение от psiklop
нужно в 2 раза меньше времени

К сожалению не меньше, а больше.

Читайте, изучайте, но никогда не пишите код по принципу - "одна строка, значит хорошо".

psiklop 22.07.2016 00:30

да читал про .htaccess, но давно, всего не помню
совершено не о чем, редиректы, запреты и тп
даже близко нету того что надо

laimas 22.07.2016 00:34

Цитата:

Сообщение от psiklop
совершено не о чем, редиректы, запреты и тп
даже близко нету того что надо

Глубокое заблуждение.

psiklop 06.08.2016 16:55

Цитата:

Сообщение от laimas (Сообщение 422964)
Глубокое заблуждение.

нет, не заблуждение, ты не посмотрел внимательно о чем я писал, или тебе просто неинтересно
.htaccess http://www.interface.ru/home.asp?artId=9456
а тут описано api яндекс диска https://tech.yandex.ru/disk/api/concepts/about-docpage/
как это совместить подскажи?

laimas 06.08.2016 17:19

Цитата:

Сообщение от psiklop
нет, не заблуждение, ты не посмотрел внимательно о чем я писал

Вы можете ответить зачем для того чтобы отдать клиенту изображение с другого адреса загружать его на свой сервер?

psiklop 06.08.2016 20:46

потому что это api яндекс диска,
сначала нужно сделать запрос с токеном,
получить прямую ссылку на файл,
скачивать незачем, но .htaccess то при чем тут

laimas 07.08.2016 00:53

Цитата:

Сообщение от psiklop
сначала нужно сделать запрос с токеном

Здрастье, приехали. А кто-то как бы говорил о "много и свободно"?

Ну даже так, вопрос остается открытым - зачем перекачивать файлы себе затем отдавая их клиенту?!

Запросили облако по токену - ответ ссылка. Что мешает обычное перенаправление средствами РНР и браузер будет сам качать с облака?

Цитата:

Сообщение от psiklop
но .htaccess то при чем тут

А притом, что он может перенаправлять name.gif/jpg/png запросы клиента на скрипт сервера работающий с API и делающий перенаправление.

psiklop 07.08.2016 01:55

Много понятие относительное, конечно токен нужен, это же яндекс диск, скажи спасибо что такой api сделали, у других облак вообще никакого нету

Не нужно перекачивать, я уже это понял

Нужно получить токен из базы на моем сервере, сделать запрос к яндекс диску и получить ответ и еще кучу всего, .htaccess примитивен в этом плане, все что он может перенаправить, это вообще ничто

laimas 07.08.2016 02:08

<?
if(isset($_GET['im'])) {
    header('location: http://javascript.ru/forum/images/ca_serenity/misc/logo.gif');
    exit;
}
?>
<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body>
<img src="?im" />
</body> 
</html>


где РНР код может быть отдельным сценарием, на который производит перенаправление .htaccess. Если для API нужен только токен, то и РНР сценария не требуется, все можно сделать в рамках .htaccess. У вас слабые представления о его возможностях.

psiklop 12.08.2016 23:00

понятно, но возможности .htaccess я знаю и использовал без подсказок
да он может перенаправить .jpg на .php и что с того
я ошибся, что мой сценарий php выкачивал файл с облака и вставлял в <img src="" /> base64 данные
а надо просто вставить ссылку
поэтому .htaccess тут не при чем
вот к примеру если бы облако не отдавало ссылку, а только сам файл, помог бы .htaccess?
получается нет и файл все равно прищлось бы скачать, так что возможности .htaccess тут не при чем,
у него тут роль второстепенная, как наверное в любом сайте, возможностей мало там, с гулькин нос)

laimas 13.08.2016 00:18

Цитата:

Сообщение от psiklop
а надо просто вставить ссылку

Есть src="куда-то", браузер обращается по указанному URL, а далее его могут шпынять перенаправлениями N раз (ну пока браузер на заподозрит и не выдаст предупреждение), при этом ему собственно все равно, что делает перенаправление. А перенаправление это и есть ссылка на новый "куда-то", и если API по запросу "хочу?картинку=эту&токен=тр ляля" отдает url этой картинки, то чего сверестественного еще и нужно от htaccess?

htaccess можно также указать отдать содержимое файла - download, это к тому, что он не туп занимаясь простыми перебросами. Вообще Апач как htttp-сервер не так и глуп как вам кажется. Да еще смотря какой сервер. Вот почитайте, может когда и сгодится.

psiklop 13.08.2016 02:23

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

а если чисто возможности htaccess, но зачем перенаправлять N раз, токены хранятся в базе mysql на моем сайте, и сделать запрос к облаку яндекс, запрос должен быть по правилам, токен должен быть в заголовке, никак не в url, так что одними перенаправлениями тут не обойтись

laimas 13.08.2016 05:28

Там описывается модуль сервера nginx. Сервер nginx зачастую используют в связке Apache + nginx, а в высоко нагруженных проектах обязательно.
Арендуя виртуальный хост, вы и не имеете возможности чего либо устанавливать, но делать заявку в службу поддержки на нужную вам конфигурацию сервера вам никто не запрещает.
Ссылка дана сугубо для ознакомления возможностей сервера, который может снижать нагрузку на интерпретатор.
Перенаправление N раз к тому, что это не есть суть, последний адрес будет рабочим.
Заголовки как раз отправляет сервер, то есть передать заголовок посредством htaccess, это для него обычная рутина.
Если речь не о токене, а куче токенов, ну значит не повезло вам, а я не настаиваю делать так как я сказал. Но занимаясь разработкой всегда помните о том, что сервер (его инструмент htaccess) служит далеко не для банального ЧПУ.

psiklop 13.08.2016 16:00

я интересуюсь javascript и php, про серверы ничего не знаю, жаль конечно, но чтобы что-то понять нужен свой сервер, общаться со службой поддержки маловато будет, можно конечно замутить сервер дома и дрючить его, но тут уже нужна хоть какая-то причина, у меня ее нет, сайтик работает и так, тут наверное главней чтобы облако не висло и отвечало хорошо, это уже от меня не зависит

тут не повезло, токенов не один, но они нужны для загрузки файла
а чтобы скачать файл с облака нужен public_key, их вообще на каждый файл свой, хотя оказывается public_key можно передать в url, но он слишком длинный и ссылка на мой сайт получится некрасивая, да и public_key это секрет в данном случае, к тому же еще облако дает json обьект, где ссылка это свойство обьекта, хотя может ты напишешь что сервер и с этим справится, блин я тогда вообще не понимаю зачем php придумали

laimas 13.08.2016 16:29

Цитата:

Сообщение от psiklop
я интересуюсь javascript и php, про серверы ничего не знаю

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

Ну коли ключей много и сложности, тогда интерпретатор, но не качать через себя, а если качать, то себе, чтобы потом не тревожить облако.


Часовой пояс GMT +3, время: 07:20.