<इनपुट प्रकार = "फ़ाइल" /> के बटन पाठ को कैसे बदलें?


257
<input type="file" value="Browse" name="avatar" id="id_avatar" />

मैंने valueइसे संशोधित करने की कोशिश की , लेकिन यह काम नहीं कर रहा है। बटन टेक्स्ट कैसे कस्टमाइज़ करें?


आप फ़ाइल नाम या बटन पाठ के बारे में बात कर रहे हैं?
आर्टिलियस

जवाबों:


153

बूटस्ट्रैप FileStyle का उपयोग करें , जिसका उपयोग रूपों के फ़ाइल फ़ील्ड को स्टाइल करने के लिए किया जाता है। यह ट्विटर बूटस्ट्रैप नामक jQuery- आधारित घटक पुस्तकालय के लिए एक प्लगइन है

नमूना उपयोग:

शामिल:

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

वाया जावास्क्रिप्ट:

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

डेटा विशेषताएँ:

<input type="file" class="filestyle" data-classButton="btn btn-primary" data-input="false" data-classIcon="icon-plus" data-buttonText="Your label here.">

लगता है मेरे लिए काम नहीं कर रहा है। यह अभी भी ब्रोसर के डिफ़ॉल्ट बटन दिखाता है। इसके अलावा, github.com/markusslima/bootstrap-filestyle.git पर डेमो भी काम नहीं करता है - सभी उदाहरण डिफ़ॉल्ट बटन दिखाते हैं। क्या मैं कुछ भूल रहा हूँ?
हां।

7
@ टोनी उह .... क्या आपको लगता है कि बूटस्ट्रैप "निराला <img /> हैक" का उपयोग नहीं कर रहा है? :-)
एंडज़

@ क्या आप बता सकते हैं कि यह कौन सा ब्राउज़र और संस्करण है? लिनक्स पर अब क्रोम संस्करण 43.0.2357.130 (64-बिट) पर परीक्षण किया गया है और सभी उदाहरण पूरी तरह से काम करते हैं।
फर्नांडो कोष

20
इतनी छोटी सी समस्या पर एक जावास्क्रिप्ट लाइब्रेरी (एक प्लगइन के साथ!) को फेंकना एक अशुभ ओवरकिल है।
एमकेआमा

3
Downvoted। यह एक जवाब भी नहीं है, केवल एक अतिरिक्त हलन की आवश्यकता है जो एक अतिरिक्त लाइब्रेरी है। उत्तर का इरादा ब्राउज़रों के लिए रेंडरिंग व्यवहार को बदलने का होना चाहिए।
wdetac

108

आप इसके बजाय एक छवि डाल सकते हैं, और इसे इस तरह से कर सकते हैं:

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');
});

गुफा : IE9 और IE10 में यदि आप जावास्क्रिप्ट के माध्यम से एक फ़ाइल इनपुट में onClick को ट्रिगर करते हैं, तो फॉर्म को 'खतरनाक' के रूप में चिह्नित किया जाएगा और इसे जावास्क्रिप्ट के साथ प्रस्तुत नहीं किया जा सकता है, यह सुनिश्चित नहीं है कि यह पारंपरिक रूप से प्रस्तुत किया जा सकता है।


5
यह एक चतुर उपाय है। क्या आप इसे <बटन> तत्व के साथ भी नहीं कर सकते हैं?
कोड कमांडर

1
@ कोड कमांडर -धन्यवाद, और हां, आप इसे हर उस तत्व के साथ कर सकते हैं, जिसे आप चाहते हैं, लेकिन सबसे आम है <छवि> तत्व। बस "फ़ाइल इनपुट" के बटन + पाठ क्षेत्र से छुटकारा
पाएं

2
उपर्युक्त का उपयोग करने वाले किसी भी व्यक्ति के सिर पर, कुछ मोबाइल ब्राउज़र प्रोग्राम फ़ाइल क्लिक को ट्रिगर करने में अक्षम करते हैं। विशेष रूप से, गैलेक्सी एस III के लिए एंड्रॉइड 4
न्यूशॉर्ट्स

मैं <input type="file" asp.net ग्रिडव्यू पंक्ति के अंदर उपयोग कर रहा हूं , जिनकी पंक्तियों को गतिशील रूप से जोड़ा जा सकता है .. इसलिए छवि पर क्लिक करते समय संबंधित इनपुट क्लिक ट्रिगर (उसी पंक्ति का) को कॉल करने के लिए सिर में एक वास्तविक दर्द होगा! : /
सोहैबी

आपका समाधान काम नहीं करता है। आपने बॉर्डर, मार्जिन, पैडिंग और बैकग्राउंड-कलर सेट नहीं किया है या फिर यह स्पष्ट होगा
yan bellavance

88

फ़ाइल इनपुट छिपाएँ। क्लिक ईवेंट को कैप्चर करने के लिए एक नया इनपुट बनाएं और इसे छिपे हुए इनपुट पर अग्रेषित करें:

<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>

HT7 फ़ाइल को ie7 मोड के साथ फेंकने पर मुझे ;अंत में हटाना पड़ा ।
एटीके

महान, केवल पाठ के दो शब्दों को बदलने के लिए बूटस्ट्रैप शामिल नहीं करना चाहते हैं, लेकिन फ़ाइल-इनपुट गतिशील रूप से बनाया गया था तो आप इसे कैसे करेंगे?
asparism

@asparism DOM का हेरफेर करने के लिए जावास्क्रिप्ट का उपयोग करते हैं, इसे स्टाइल सेट करके छिपाते हैं और पहले उपयोग करते हैं () और नया इनपुट तत्व जोड़ते हैं?
मुशायस

3
@MushyPeas यह सबसे आसान तरीका है। सीएसएस के साथ खेलने की कोशिश की, लेकिन यह समाधान बहुत तेज और आसान है। धन्यवाद
मारा

2
यह मेरे लिए सबसे आसान तरीका था! इसने मुझे 'मॉक' फाइल-बटन को अन्य फॉर्म-बटन विकल्पों में से एक के रूप में स्टाइल करने की अनुमति दी - बिना ऑड-ईवन "ब्राउज़" फ़ाइल-बटन प्रदर्शित करने के बारे में चिंता किए बिना।
हैरी मंथिसिस

47

"अपलोड फ़ाइल ..." पाठ ब्राउज़र द्वारा पूर्व-परिभाषित है और इसे बदला नहीं जा सकता है। इसके आस-पास आने का एकमात्र तरीका फ़्लैशफ या लोड आधारित जावा जैसे अपलोड घटक का उपयोग करना है ।


3
क्या आप इसे साबित कर सकते हैं कि इसे बदला नहीं जा सकता है?
user198729

या ब्राउज़र के सोर्स कोड ब्राउज़ करके, कम से कम ओपन सोर्स वालों के लिए।
पक्के डेका

इसका उत्तर किसी अन्य प्रश्न से हो सकता है, जैसे टाइप फ़ाइल के इनपुट फ़ील्ड के लिए "वैल्यू =" C: \ someFile.txt "," TYPE = "FILE" "जैसे किसी अन्य प्रश्न पर, मान क्यों अनदेखा किया गया है ब्राउज़र? "): stackoverflow.com/questions/1342039
पीटर मॉर्टेंसन

23

पूरी तरह से सभी ब्राउज़रों पर काम करता है आशा है कि यह आपके लिए भी काम करेगा।

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

सीएसएस:

 .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';इच्छित पाठ के साथ बदलें''

अगर फ़ायरफ़ॉक्स के साथ काम नहीं कर रहा है तो इनपुट के बजाय इसका उपयोग करें:

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

<input id="Upload" type="file" multiple="multiple" name="_photos" accept="image/*" style="visibility: hidden">

सफारी पर काम करता है, हालांकि
Cullub

मेरे FF 41.0.2 पर मेरे अंत में पूरी तरह से काम कर रहा है। आप ब्राउज़र संगतता समस्या को पार करने के लिए दौड़ रहे हैं कृपया इस मुद्दे को स्पष्ट करने के लिए CSS बॉक्स मॉडल का संदर्भ लें।
कोड काला

1
समस्या शायद यह है कि एफएफ गेको पर बनाया गया है, वेबकिट पर नहीं। (मेरा सबसे अच्छा अनुमान)
कुलुब

2
<लेबल id = "addButton" के लिए = "अपलोड" शैली = "पृष्ठभूमि-रंग: # 000; रंग: #fff; गद्दी: 4px; सीमा-त्रिज्या: 4px; फ़ॉन्ट-परिवार: एकरूपता;" > कुछ फ़ाइल चुनें </ लेबल> <इनपुट आईडी = "अपलोड" प्रकार = "फ़ाइल" एकाधिक = "एकाधिक" नाम = "_ तस्वीरें" स्वीकार = "छवि / *" शैली = "दृश्यता: छिपी">
कोड ब्लैक

4
ठीक है धन्यवाद! इस JSFiddle बाहर की जाँच करें । यदि आप अपना उत्तर उस के साथ संपादित करते हैं, तो मुझे लगता है कि यह एक
उत्थान

10

यह एक इनपुट फ़ाइल तत्व के बटन पाठ को बदलने के लिए एक JQuery प्लगइन है।

उदाहरण HTML:

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

उदाहरण JS:

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

परिणाम:

प्लगइन परिणाम



8

केवल

<label class="btn btn-primary">
  <i class="fa fa-image"></i> Your text here<input type="file" style="display: none;"  name="image">
</label>

[स्निपेट के साथ संपादित करें]

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>

<label class="btn btn-primary">
<i class="fa fa-image"></i> Your text here<input type="file" style="display: none;" name="image">
</label>


यह देखने की कोशिश करें कि मैंने यहाँ क्या किया jsfiddle.net
केन कार्लो

धन्यवाद, वास्तव में मैं क्या चाहता था :)
गर्थ बेकर

7

मुझे लगता है कि आप यही चाहते हैं:

<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"> 

3

संपादित करें : मैं अब उन टिप्पणियों द्वारा देखता हूं जो आप बटन पाठ के बारे में पूछ रहे हैं, न कि फ़ाइल पथ के बारे में। मेरी गलती। मैं अपना मूल उत्तर किसी और के मामले में नीचे छोड़ दूंगा, जो इस प्रश्न पर लड़खड़ाता है, यह इस बात की व्याख्या करता है कि मैंने मूल रूप से क्या किया था।

दूसरा EDIT : मैंने यह उत्तर हटा दिया था क्योंकि मैंने फैसला किया था कि मैंने प्रश्न को गलत समझा और मेरा उत्तर प्रासंगिक नहीं था। हालांकि, एक अन्य जवाब में टिप्पणियों ने संकेत दिया कि लोग अभी भी इस जवाब को देखना चाहते थे इसलिए मैं इसे हटा रहा हूं।

मेरा मूल उत्तर (मुझे लगा कि ओपी पथ के बारे में पूछ रहा था, बटन पाठ नहीं):

यह सुरक्षा कारणों से समर्थित सुविधा नहीं है । ओपेरा वेब ब्राउज़र इसका समर्थन करता था लेकिन इसे हटा दिया गया था। इस बारे में सोचें कि अगर यह समर्थन किया जाता है तो क्या संभव होगा; आप एक फ़ाइल अपलोड इनपुट के साथ एक पेज बना सकते हैं, इसे कुछ संवेदनशील फ़ाइल के लिए पथ के साथ पूर्व-आबाद कर सकते हैं और फिर onloadघटना द्वारा ट्रिगर जावास्क्रिप्ट का उपयोग करके फ़ॉर्म को ऑटो सबमिट कर सकते हैं । यह उपयोगकर्ता के लिए इसके बारे में कुछ भी करने के लिए बहुत तेज़ी से होगा।


3

<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>

यह बिना किसी जावास्क्रिप्ट के काम करता है । आप अपने दिल की सामग्री को लेबल को जटिलता के किसी भी हद तक सजा सकते हैं। जब आप लेबल पर क्लिक करते हैं, तो क्लिक स्वचालित रूप से फ़ाइल इनपुट पर पुनर्निर्देशित हो जाती है। फ़ाइल इनपुट को ही किसी भी विधि द्वारा अदृश्य बनाया जा सकता है। यदि आप चाहते हैं कि लेबल एक बटन की तरह दिखाई दे, तो कई समाधान हैं, जैसे:

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

    text-decoration: none;
    color: initial;
}

2

केवल CSS और बूटस्ट्रैप क्लास

        <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>

1
  1. इससे पहले <input type="file">, एक छवि जोड़ें और <input style="position:absolute">यह की जगह पर कब्जा होगा<input type="file">
  2. फ़ाइल तत्व के लिए निम्नलिखित सीएसएस का उपयोग करें

    position:relative;  
    opacity:0;  
    z-index:99;

0

यदि आप रेल का उपयोग कर रहे हैं और इसे लागू करने में समस्या है, तो मैं @Fernando Kosh द्वारा पोस्ट किए गए मूल उत्तर से कुछ सुझाव जोड़ना चाहूंगा

  • फ़ाइल ज़िप डाउनलोड करें और फ़ाइल बूटस्ट्रैप-फाइलस्टाइल को कॉपी करें ।min.js ke फ़ोल्डर ऐप / संपत्ति / javascripts /
  • अपना एप्लिकेशन खोलें। js और इस पंक्ति को नीचे जोड़ें

    // = बूटस्ट्रैप-फाइलस्ट्रीम की आवश्यकता है

  • अपनी कॉफी खोलें और इस लाइन को जोड़ें

    $ (": फाइल")। फिलिस्तीन ({बटननाम: "बीटीएन-प्राइमरी", बटनबियर: सच, बटन टेक्स्ट: "आपका पाठ यहां", आइकन: गलत});


0

आप बस कुछ सीएसएस ट्रिक जोड़ सकते हैं। आपको जावास्क्रिप्ट या अधिक इनपुट फ़ाइलों की आवश्यकता नहीं है और मैं मौजूदा मूल्य विशेषता रखता हूं । आपको केवल css जोड़ने की आवश्यकता है । आप इस समाधान की कोशिश कर सकते हैं।

.btn-file-upload{
     width: 187px;
     position:relative;
 }

.btn-file-upload:after{
    content:  attr(value);
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;    
    width: 48%;
    background: #795548;
    color: white;
    border-radius: 2px;
    text-align: center;
    font-size: 12px;
    line-height: 2;
 }
<input type="file" class="btn-file-upload" value="Uploadfile" />


0

यहाँ शुद्ध HTML और जावास्क्रिप्ट के साथ फ़ाइल प्रकार के इनपुट के पाठ को "बदलने" का एक तरीका है:

<input id='browse' type='file' style='width:0px'>
<button id='browser' onclick='browse.click()'>
    *The text you want*
</button>

0

मेरे लिए यह बूटस्ट्रैप-फिल्मस्टाइल के साथ कस्टम टेक्स्ट पर काम नहीं करता है । यह बटन की सजावट के साथ मदद करता है, लेकिन पाठ को बदलने के लिए अजीब है, सीएसएस के साथ कुश्ती में आने से पहले मैं निम्नलिखित प्रयास करता हूं:

$( document ).ready(function() {
   $('.buttonText').html('Seleccione ficheros');
});

बूटस्ट्रैप-फिलिस्तीन घटक को एक वर्ग के रूप में प्रस्तुत करता है जिसका नाम बुटोनटेक्स्ट है, इसलिए जब दस्तावेज़ लोड केवल पाठ को बदलते हैं। आसान सही है और इसे सभी ब्राउज़रों पर काम करना चाहिए।

चियर्स


0

मैंने इसे अपनी परियोजना के लिए इस तरह किया:

.btn-outlined.btn-primary {
  color: #000;
}
.btn-outlined.btn-primary:active, .btn-outlined.btn-positive:active, .btn-outlined.btn-negative:active {
  color:#000;
}
.btn-block {
  display: block;
  width: 100%;
  padding: 15px 0;
  margin-bottom: 10px;
  font-size: 18px;
  font-family: Arial, Helvetica, sans-serif;
  text-align: center;
}
<label for="fileUpload" class="btn btn-primary btn-block btn-outlined">Your text</label>
<input type="file" id="fileUpload"style="display: none;">


-1

यह एक वैकल्पिक समाधान है जो आपकी मदद कर सकता है। यह बटन से प्रकट होने वाले पाठ को छुपाता है, इसे 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>

Chrome 39 में मैं UPLOAD IMAGE टेक्स्ट और <इनपुट> बटन दोनों देखता हूं। जब से आपने इसे पोस्ट किया है, क्रोम की फ़ाइल इनपुट की हैंडलिंग बदल गई है?
एरिकपी

@ यान-बेलवेंस आप क्या कर रहे हैं? यदि आपको लगता है कि एक उत्तर गलत है या सहायक नहीं है, तो डाउनवोट है, लेकिन किसी भी तरह से इसे ख़राब नहीं करना चाहिए!
काइदो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.