Как загрузить новый файл при нажатии кнопки изображения

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

    <label>File</lable>
    <input type="image" src="http://upload.wikimedia.org/wikipedia/commons/c/ca/Button-Lightblue.svg" width="30px"/>

При нажатии этой кнопки я хочу загрузить новый файл. Как я могу это сделать? Вы можете проверить мой код Демо

Ответы

Ответ 1

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

<input type="image" src="http://upload.wikimedia.org/wikipedia/commons/c/ca/Button-Lightblue.svg" width="30px"/>
<input type="file" id="my_file" style="display: none;" />

И выполните:

$("input[type='image']").click(function() {
    $("input[id='my_file']").click();
});

Демо:: Обновлен скрипт

Ответ 3

Если вы ищете решение, совместимое с кросс-браузером, вы должны проверить plupload (http://www.plupload.com), он поддерживает кнопки изображения, а также от того, что я помню.

Ответ 4

вы используете неправильный ввод, вместо этого используйте файл, если вы хотите, чтобы кнопка была похожа на круг в вашей демо-версии кода, вам нужно будет использовать CSS, чтобы изменить способ "отправить". Это должно быть в форме:

<form action="upload_file.php" method="post" enctype="multipart/form-data">
  <input type="file" name="myfile"/>
  <input type="submit" class="circle-btn"/>
<form>

Я не знаю, какой язык вы используете на стороне сервера (PHP, ASP.NET и т.д.), но вам нужно будет создать страницу (для xample "upload_file.php" для php). Вы можете легко найти примеры в google о том, как создать такую ​​страницу, просто скопируйте pasete код:

Пример в PHP: http://www.w3schools.com/php/php_file_upload.asp

Надеюсь, это поможет:)

Ответ 5

Вы можете сделать это с помощью css.

Пожалуйста, проверьте 4-й ответ в этом блоге.

Как настроить кнопку обзора?

Вы можете использовать свое изображение в качестве фонового изображения класса .button.

Ответ 6

Не нужно, чтобы javascript просто помещал <input> и <img> внутрь <label>, чтобы убедиться, что вы скрываете <input> так:

   <label for="image">
      <input type="file" name="image" id="image" style="display:none;"/>
      <img src="IMAGE URL"/>
   </label>

Ответ 7

Дополнение для ответа DemoUser, добавление .focus() работает для меня.

  $("input[type='image']").click(function() {
    $("input[id='my_file']").focus().click();
  });