Изменить язык загрузки файлов язык CakePHP 3 [дублировать]

Его эквивалент

 >>> print(df2.loc[140:160,['Relevance','Title']])
 >>> print(df2.ix[140:160,[3,7]])
204
задан BalusC 21 January 2010 в 13:10
поделиться

15 ответов

EDIT: теперь я вижу комментарии, которые вы спрашиваете о тексте кнопки, а не о пути файла. Виноват. Я оставлю свой первоначальный ответ ниже, если кто-то, кто наткнулся на этот вопрос, интерпретирует его так, как я изначально сделал.

2nd EDIT: я удалил этот ответ, потому что решил, что я неправильно понял этот вопрос и мой ответ не был уместным. Однако комментарии в другом ответе указывали на то, что люди все еще хотели увидеть этот ответ, поэтому я его отменяю.

МОЙ ОРИГИНАЛЬНЫЙ ОТВЕТ (я думал, что OP спрашивает о пути, а не о тексте кнопки):

Это свойство не поддерживается по соображениям безопасности . Веб-браузер Opera поддерживал это, но он был удален. Подумайте, что было бы возможно, если бы это было поддержано; Вы можете сделать страницу с файлом, загружающим вход, предварительно заполнить его с помощью пути к некоторому чувствительному файлу, а затем автоматически отправить форму с помощью javascript, вызванного событием onload. Это может произойти слишком быстро, чтобы пользователь мог что-то сделать.

3
ответ дан Amirhossein Mehrvarzi 21 August 2018 в 12:07
поделиться

Вы можете поместить изображение вместо этого и сделать это следующим образом:

HTML:

<img src="/images/uploadButton.png" id="upfile1" style="cursor:pointer" />
<input type="file" id="file1"  name="file1" style="display:none" />

JQuery:

$("#upfile1").click(function () {
    $("#file1").trigger('click');
});

CAVEAT: In IE9 и IE10, если вы активируете onClick в входе файла через javascript, форма будет помечена как «опасная» и не может быть отправлена ​​с помощью javascript, не уверен, что ее можно отправить традиционно.

93
ответ дан Charlie74 21 August 2018 в 12:07
поделиться
  • 1
    Это умное решение. Не могли бы вы также сделать это с помощью кнопки & lt; & gt; элемент? – Code Commander 23 July 2013 в 18:41
  • 2
    @Code Commander -Thanks, и да, вы можете сделать это с каждым элементом, который хотите, но наиболее распространенным является & lt; image & gt; элемент. Просто избавитесь от кнопки + текстовое поле ввода файла "... – ParPar 24 July 2013 в 22:24
  • 3
    Просто голова для всех, кто использует вышеизложенное, некоторые мобильные браузеры отключают запуск ввода файлов с программным обеспечением. В частности, андроид 4 для Galaxy S III – newshorts 24 May 2014 в 20:49
  • 4
    Я использую <input type="file" внутри строки gridview asp.net, чьи строки могут быть добавлены динамически .. так что это будет настоящая боль в голове, чтобы вызвать соответствующий триггер нажатия для ввода (той же строки) при щелчке по изображению! : / – sohaiby 11 May 2015 в 12:09
  • 5
    ваше решение не работает. Вы не задавали границы, поля, отступов и фонового цвета, или иначе это было бы очевидно – yan bellavance 29 March 2018 в 03:37

Я думаю, что это то, что вы хотите:

<button style="display:block;width:120px; height:30px;" onclick="document.getElementById('getFile').click()">Your text here</button>


<input type='file' id="getFile" style="display:none"> 
4
ответ дан Chit 21 August 2018 в 12:07
поделиться

Прекрасно работает на всех браузерах Надеюсь, что это сработает и для вас.

HTML: <input type="file" class="custom-file-input">

CSS:

 .custom-file-input::-webkit-file-upload-button {
  visibility: hidden;
}
.custom-file-input::before {
  content: 'Select some files';
  display: inline-block;
  background: -webkit-linear-gradient(top, #f9f9f9, #e3e3e3);
  border: 1px solid #999;
  border-radius: 3px;
  padding: 5px 8px;
  outline: none;
  white-space: nowrap;
  -webkit-user-select: none;
  cursor: pointer;
  text-shadow: 1px 1px #fff;
  font-weight: 700;
  font-size: 10pt;
}
.custom-file-input:hover::before {
  border-color: black;
}
.custom-file-input:active::before {
  background: -webkit-linear-gradient(top, #e3e3e3, #f9f9f9);
}

Изменить content: 'Select some files'; с текстом, который вы хотите в ''

ЕСЛИ НЕ РАБОТАЕТ С firefox, тогда используйте это вместо ввода:

<label class="custom-file-input" for="Upload" >
</label>

<input id="Upload" type="file" multiple="multiple" name="_photos" accept="image/*" style="visibility: hidden">
15
ответ дан Code Black 21 August 2018 в 12:07
поделиться
  • 1
    Не работает на моем FF42 – Cullub 5 December 2015 в 15:29
  • 2
    Работает на Safari, хотя – Cullub 5 December 2015 в 15:34
  • 3
    Он отлично работает в моем конце на моем FF 41.0.2. Вы работаете в области перекрестной совместимости с браузером, пожалуйста, обратитесь к CSS BOX MODEL, чтобы минимизировать проблему. – Code Black 7 December 2015 в 18:23
  • 4
    & lt; label id = "addButton" при = & Quot; Загрузить & Quot; style = & quot; background-color: # 000; цвет: #fff; обивка: 4px; границы радиус: 4px; семейство шрифтов: моноширинный; & Quot; & gt; Выбрать некоторый файл & lt; / label & gt; & lt; входной идентификатор = & quot; Загрузка & quot; тип = & Quot; Файл & Quot; кратным = & Quot; множественным & Quot; Имя = & Quot; _photos & Quot; принимаем = & Quot; изображение / * & Quot; style = & quot; видимость: скрытый & quot; & gt; & gt; – Code Black 7 December 2015 в 19:32
  • 5
    Хорошо, спасибо! Проверьте этот JSFiddle . Если вы отредактируете свой ответ с этим, я думаю, что это достойно upvote :) – Cullub 7 December 2015 в 19:49

Этот является плагином JQuery для изменения текста кнопки элемента входного файла.

Пример HTML:

<input type="file" id="choose-file" />

Пример JS:

$('#choose-file').inputFileText({
    text: 'Select File'
});

Результат:

plugin result [/g1]

8
ответ дан datchung 21 August 2018 в 12:07
поделиться
<input id="uploadFile" placeholder="Choose File" disabled="disabled" />
<div class="fileUpload btn btn-primary">
    <span>Your name</span>
    <input id="uploadBtn" type="file" class="upload" />
</div>

JS

document.getElementById("uploadBtn").onchange = function () {
    document.getElementById("uploadFile").value = this.value;
 };

больше http://geniuscarrier.com/how-to-style-a-html-file-upload-button-in-pure-css /

9
ответ дан Igor Ivancha 21 August 2018 в 12:07
поделиться
  • 1
    Это, тем не менее, менее "инвазивный" решение. Работать хорошо! Мне нужно было сделать это в существующем webapp, старом JQuery, somes plugins ... bootstrap требует определенной версии JQuery, такой же, как и весь другой плагин, уже реализованный, так что обновление всего (и тестирование всего webapp во всем браузере) было вне сферы действия ! Решение Websky не требует каких-либо серьезных изменений, это легкий вес, который легко понять. Благодаря! – Remi Morin 2 February 2015 в 18:47

Скрыть ввод файла. Создайте новый вход для захвата события щелчка и переместите его на скрытый вход:

<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>
61
ответ дан jtheletter 21 August 2018 в 12:07
поделиться
  • 1
    Благодарю. Самое простое решение! – Gijo Varghese 21 March 2017 в 07:51
  • 2
    Короткий и простой - прекрасный! (протестирован в браузере Android 4.4 / хром андроида) – gonatee 24 April 2017 в 07:27
  • 3
    бросая в HTA-файл с режимом ie7, мне пришлось удалить ; в конце. – ssaviers 20 July 2017 в 23:28
  • 4
    отлично, не хочу включать bootstrap только для изменения двух слов текста, но как бы вы это сделали, если файл-ввод был создан динамически? – asparism 10 December 2017 в 02:06
  • 5
  • 6
  • 7
    @MushyPeas это самый простой способ. пытался играть с css, но это решение намного быстрее и проще. благодаря – Mara 28 June 2018 в 19:33

Это альтернативное решение, которое может вам помочь. Это скрывает текст, который появляется из кнопки, смешивая его с фоновым цветом div. Затем вы можете указать div, который вам нравится.

<div style="padding:10px;font-weight:bolder; background-color:#446655;color: white;margin-top:10px;width:112px;overflow: hidden;">
     UPLOAD IMAGE <input style="width:100px;color:#446655;display: inline;" type="file"  />
</div>
-1
ответ дан Kaiido 21 August 2018 в 12:07
поделиться
  • 1
    В Chrome 39 я вижу как текст UPLOAD IMAGE, так и & lt; input & gt; кнопка. Возможно, обработка хром в файловых вводах изменилась с тех пор, как вы разместили это сообщение? – Dwayne 23 December 2014 в 19:26
  • 2
    @ yan-bellavance, что ты делаешь? Если вы считаете, что ответ неправильный или не полезный, downvote, но ни в коем случае не обесценивайте его! – Kaiido 29 March 2018 в 03:49

Только CSS & amp; bootstrap class

        <div class="col-md-4 input-group">
            <input class="form-control" type="text"/>
            <div class="input-group-btn">
                <label for="files" class="btn btn-default">browse</label>
                <input id="files" type="file" class="btn btn-default"  style="visibility:hidden;"/>
            </div>
        </div>
0
ответ дан mahmood kabi 21 August 2018 в 12:07
поделиться

Используйте <label> для заголовка

<form enctype='multipart/form-data' action='/uploads.php' method=post>
<label for=b1>
    <u>Your</u> caption here
<input style='width:0px' type=file name=upfile id=b1
 onchange='optionalExtraProcessing(b1.files[0])'
 accept='image/png'>
</label>
</form>

Это работает без javascript. Вы можете украсить ярлык до любой степени сложности, до вашего сердца. Когда вы нажимаете на метку, клик автоматически перенаправляется на вход файла. Сам ввод файла может быть невидимым любым способом. Если вы хотите, чтобы метка отображалась как кнопка, существует множество решений, например :

label u {
    -webkit-appearance: button;
    -moz-appearance: button;
    appearance: button;

    text-decoration: none;
    color: initial;
}
3
ответ дан MKaama 21 August 2018 в 12:07
поделиться

Текст «загрузить файл ...» предварительно определен браузером и не может быть изменен. Единственный способ обойти это - использовать компонент загрузки на основе Flash или Java, например swfupload .

42
ответ дан Pekka 웃 21 August 2018 в 12:07
поделиться
  • 1
    Можете ли вы доказать, что его нельзя изменить? – user198729 22 December 2009 в 06:12
  • 2
    @OP Это должно быть возможно найти в документах XHTML. – jensgram 22 December 2009 в 06:14
  • 3
    Или просмотрите исходные коды браузеров, по крайней мере, для файлов с открытым исходным кодом. – Pekka 웃 22 December 2009 в 06:15
  • 4
    Эй, где же ответ? Это было намного сложнее. – Pekka 웃 22 December 2009 в 06:25
  • 5
    @Asaph D: Я также заинтересован в вашем ответе! У вас есть какая-то ссылка? Например. к другому вопросу о переполнении стека или некоторой веб-странице. – Peter Mortensen 21 January 2010 в 13:12
  • 6
    – Peter Mortensen 21 January 2010 в 16:47

Используйте Bootstrap FileStyle , который используется для стилизации полей файлов форм. Это плагин для библиотеки компонентов на основе jQuery под названием Twitter Bootstrap

Пример использования:

Включить:

<script type="text/javascript" src="js/bootstrap-filestyle.min.js"> </script>

Через JavaScript:

$(":file").filestyle();

Через атрибуты данных:

<input type="file" class="filestyle" data-classButton="btn btn-primary" data-input="false" data-classIcon="icon-plus" data-buttonText="Your label here.">
148
ответ дан silver est 21 August 2018 в 12:07
поделиться
  • 1
    Удивительно, спасибо. Этот ответ заслуживает большего внимания, чем дурацкий & lt; img / & gt; хак. – Tony 18 December 2013 в 14:03
  • 2
    Я думаю, что @Tony сказал, что это лучший ответ. Это очень просто и точно – user 29 April 2014 в 09:39
  • 3
  • 4
    @Tony Uhh .... что заставляет вас думать, что Bootstrap не использует «wacky & lt; img / & gt; взломать & Quot; под ним? :-) – Andz 3 July 2015 в 08:34
  • 5
    – Fernando Kosh 6 July 2015 в 21:16
  • 6
    не работает для меня, Chrome 50 для Ubuntu и Android – Xiaofeng 21 June 2016 в 05:21
  • 7
    Бросать javascript-библиотеку (с плагином!) На такую ​​маленькую проблему - это неэлегантный перебор. – MKaama 12 September 2016 в 18:48
  1. До этого <input type="file"> добавьте изображение, а <input style="position:absolute"> он займет пространство <input type="file">
  2. . Используйте следующий CSS для элемента файла
    position:relative;  
    opacity:0;  
    z-index:99;
    
1
ответ дан Toby Speight 21 August 2018 в 12:07
поделиться

, если вы используете рельсы и имеете проблемы с этим, я хотел бы добавить несколько советов из оригинального ответа, отправленного @Fernando Kosh

  • Скачать файл zip и скопировать файл bootstrap-filestyle.min.js ke папка app / assets / javascripts /
  • откройте приложение application.js и добавьте эту строку ниже // = require bootstrap-filestyle.min
  • open ваш кофе и добавьте эту строку $ (": file"). filestyle ({buttonName: "btn-primary", buttonBefore: true, buttonText: «Ваш текст здесь», значок: false});
1
ответ дан widjajayd 21 August 2018 в 12:07
поделиться
0
ответ дан Ken Karlo 1 November 2018 в 06:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: