Хостинг изображений с несколькими серверами - PullRequest
0 голосов
/ 05 августа 2011

Я занимаюсь разработкой хоста изображений и хочу, чтобы изображения загружались на отдельный сервер из моего веб-контента, например: http://i1.mysite.com вместо http://mysite.com/uploads. Но мне трудно понять, как это сделать.

Скажите, у меня есть эта форма:

<form action="http://mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="image" id="file_upload" />
    <input type="submit" value="Upload" id="upload_submit" />
</form>

Это отправит файл изображения на /upload, где я могу проверить файл и сохранить его, но это будет на том же сервере, на котором размещен сайт, а не на выделенном сервере хранения. Как я могу добиться того, чего хочу, не загружая изображения на тот же сервер, что и мой веб-сайт?

Я всегда мог сделать:

<form action="http://i1.mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="image" id="file_upload" />
    <input type="submit" value="Upload" id="upload_submit" />
</form>

, который отправит файл изображения на другой сервер, но затем, когда загрузка изображения будет завершена, я буду перенаправлен на http:/i1.mysite.com/upload.

Кто-нибудь имеет опыт работы с этим и может порекомендовать курс действий? Спасибо!

Ответы [ 4 ]

1 голос
/ 05 августа 2011

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

Отправьте форму загрузки на сервер вашего основного сайта. Затем вы можете использовать другие протоколы для передачи загруженных файлов на серверы изображений. rsynch, scp и т. д. Таким образом, у вас есть весь «управляющий» код в одном месте, и вам не нужно беспокоиться о синхронизации баз данных и прочего между несколькими серверами - все данные хранятся на вашем главном сервере, а серверы изображений просто пассивно выплевывают данные изображений.

0 голосов
/ 05 августа 2011

Вы можете загрузить изображение на свой хост изображений и впоследствии перенаправить его на ваш сайт.Один из способов сделать это - добавить скрытые входные URL-адреса «успех» и «отказ» в форму:

<form action="http://i1.mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="image" id="file_upload" />
    <input type="submit" value="Upload" id="upload_submit" />
    <input type="hidden" name="success" value="http://mysite.com/success" />
    <input type="hidden" name="failure" value="http://mysite.com/failure" />
</form>

Сценарий загрузки на хосте изображений будет перенаправлен на указанный URL после успешной загрузки:

<?php
    .. handle uploaded file ..

    if ($success) {
        header ('Location: ' . $_REQUEST ['success']) ;
    }
    else {
        header ('Location: ' . $_REQUEST ['error'] . '?message=' . $message) ;
    }

?>
0 голосов
/ 05 августа 2011

Как и другие говорили, то, что вы пытаетесь сделать, не оптимально. Если вы действительно хотите продолжать делать это, я бы предложил отправить форму в скрипт PHP, который затем обрабатывает ее и помещает файл в нужное место, а затем сохраняет всю необходимую информацию в базу данных, которая необходима. Вам нужно будет оценить лучший протокол для передачи данных с одного сервера на другой. Вы, вероятно, в конечном итоге будете использовать Curl, о котором вы можете узнать здесь и здесь , а также curl docs

0 голосов
/ 05 августа 2011

Я бы порекомендовал развязать эти две идеи. Сначала загрузите изображение на свои серверы и в отдельном процессе (возможно, запланированном cron) перенесите изображения на другой сервер. Скорее всего, вы не хотите, чтобы пользователь ждал завершения двух загрузок.

...