Jump to content
  • 0

Выбор файла на своем диске используя PHP...


Serjinio
 Share

Question

Задача такого плана ...есть форма в которой есть поле' Выбрать IMG' как реализовать чтобы можно было нажать на кнопку 'ВЫБРАТЬ' и выбрать , допустим картинку, которая находится по адресу...D:...imgsss.img...и она вставилась в форму ,чтобы потом отправиться в обработчик....не хочется в форме писать вручную D:...imgsss.img

Простите если коряво объяснил ...

Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0

в БД можно сохранить либо информацию о файле (типа: путь к нему на сервере, описание, кто загрузил), разумеется файл будет в файловой системе. ну либо если имеется в виду содержимое файла записывать в базу, все равно принцип тот же, только вместо copy() использовать чтение файла, а затем писать содержимое переменной в БД

Link to comment
Share on other sites

  • 0
ну либо если имеется в виду содержимое файла записывать в базу, все равно принцип тот же, только вместо copy() использовать чтение файла, а затем писать содержимое переменной в БД

именно содержимое,а можно пример кода

Link to comment
Share on other sites

  • 0

input_file_name - то что пишем в name у инпута типа файл ()

if(is_uploaded_file($_FILES['input_file_name']['tmp_name'])) {
// здесь делаем с этим файлом что угодно, раз проверили что он существует

// для начала скопируем его
copy($_FILES['input_file_name']['tmp_name'],$_SERVER['DOCUMENT_ROOT'].'/tmpfile');

// например открываем на чтение:
$uploaded_file = fopen($_SERVER['DOCUMENT_ROOT'].'/tmpfile','r');

// а в конце удаляем
unlink($_SERVER['DOCUMENT_ROOT'].'/tmpfile');
}
else {$errs[] = 'Не удалось загрузить файл';}

Link to comment
Share on other sites

  • 0

Scrum писал:

Спасибо большое!

Только не пойму какой раздел Безопасности имеется в виду?

..обеспечить необходимый уровень безопасности, работая с Uploads..

Я так понял: - Предполагается ситуация, когда веб-интерфейс, написанный на PHP, регулярно используется для работы с файлами, и настройки безопасности позволяют удалять файлы в домашнем каталоге.

А если пользователь ничего не удаляет, а только посылает файлы на сервер..?

PS: Никогда до этого не общался ни на одном форуме. Заранее прошу прощения, если что-то не так напечатается или еще чего...

Link to comment
Share on other sites

  • 0
PS: Никогда до этого не общался ни на одном форуме. Заранее прошу прощения, если что-то не так напечатается или еще чего...

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

Link to comment
Share on other sites

  • 0
А если пользователь ничего не удаляет, а только посылает файлы на сервер..?

вот и надо проверять че он там посылает.

И все же, достаточно ли проверить Mime-тип загруженного файла, или все гораздо "замороченней" ?

Link to comment
Share on other sites

  • 0

mime серер определяет по расширению если мне память не изменяет... так что все же надо либо рассчитывать что пользователи не догадаются проверять систему путем смены расширения у загружаемых файлов, либо открывать на чтение (вариант: бинарное чтение)

Link to comment
Share on other sites

  • 0
mime серер определяет по расширению если мне память не изменяет... так что все же надо либо рассчитывать что пользователи не догадаются проверять систему путем смены расширения у загружаемых файлов, либо открывать на чтение (вариант: бинарное чтение)

Я понял что тип файла определяется не по расширению, а по структуре. Когда делел нечто подобное то пробовал проверять , загрузив файл *.doc ,предварительно сменив его на *jpg и все рвано mime тип определился правильно

Link to comment
Share on other sites

  • 0
Я понял что тип файла определяется не по расширению, а по структуре. Когда делел нечто подобное то пробовал проверять , загрузив файл *.doc ,предварительно сменив его на *jpg и все рвано mime тип определился правильно

тогда каккой сервер скажи плиз... апач по крайней мере определяет именно по расширению (файл conf/mime.types)

Link to comment
Share on other sites

  • 0
mime серер определяет по расширению если мне память не изменяет... так что все же надо либо рассчитывать что пользователи не догадаются проверять систему путем смены расширения у загружаемых файлов, либо открывать на чтение (вариант: бинарное чтение)

... а потом по сигнатуре отфильтровать то, что разрешено ?

Или может вообще не стоит заморачиваться, если пользователь не имеет возможности ни запустить свой файл, ни редактировать, ни что-либо с ним делать...

Link to comment
Share on other sites

  • 0

ну скажем так - если юзер хочет тебе закинуть файл .php достаточно запретить такое расширение (и все, которые разрешены на исполнение пхп-интерпретатором). тогда если он переименует к примеру в .txt и все же загрузит, код выполняться не будет. с различными cgi-скриптами, независимо от языка и подавно. .htm точно так же блочим, чтоб нехороший человек не смог загрузить хтмлку с iframe на твой сервер и давать потом ссылку на него. от троянописателей защищаемся фильтром .exe, .com, .bat, .cmd, .nt, .vbs, .pif - и все. ну переименует он экзешник в txt, так скачавший все равно не запустит этого трояна

Link to comment
Share on other sites

  • 0
ну скажем так - если юзер ...

Спасибо, D.S.Denton, за помощь!

Вот только возник вопрос по поводу

...либо открывать на чтение (вариант: бинарное чтение)

но сформулировать не получается.

Дело в том, что загруженный пользователем файл (картинку или .doc), мне необходимо передать с сервера на свой жесткий диск для дальнейшего оффлайн использования.

Link to comment
Share on other sites

  • 0

Спасибо D.S.Denton.

Вроде все становится на свои места. Периодически забирать загруженные файлы - вроде как бы проще.

Но все же, наверное, со временем придется более детально изучить "Отправку почты средствами PHP", т.к., видимо, просто mail() тут - ("отправляешь файлы после загрузки себе на мыло") - не обойтись.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy