{"id":1437,"date":"2014-03-26T13:11:27","date_gmt":"2014-03-26T11:11:27","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=1437"},"modified":"2014-03-26T13:11:27","modified_gmt":"2014-03-26T11:11:27","slug":"xpages-bootstrap-file-input","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=1437","title":{"rendered":"XPages: Bootstrap File Input"},"content":{"rendered":"<p>When using the default file upload control in a Bootstrap application, the default file upload button does not fit anymore to the design:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkIAAAG9CAIAAAB26Y4GAAAgAElEQVR4nO3d63NU9R348fwhv0fOr+1zfdqZdvqsM9jfTIeHTpnpOD7R1tSG0TI4bccKKArGmGqVijEKKCUkSkW5DIpKSQgCjhpjCAQSQq57P8nuZoHfg7PZPdfd8zl7OZ8T3685D2Qv58bm++ZcsnbcAwAgtjqiXgEAAMIjYwCAGCNjAIAYI2MAgBgjYwCAGCNjAIAYI2MAgBgjYwCAGCNjAIAYI2MAgBgjYwCAGCNjAIAYI2MAgBgjYwCAGCNjAIAYI2MIqVgsJpPJhYWFeQCIDhlDGIZhVD5DCwAQHTIGsUKhYH56FhcXl5aWlgEgOmQMYua5xOXl5WQymUql0gAQHTIGscXFxeXl5VQqlclkstlsDgCiQ8YgNj8\/n0wmM5lMLpczACBSZAxi8\/PzqVQqm81G\/ekFADIGufn5+XQ6zaEYAA3IGMTIGAA9yBjEyBgAPcgYxMgYAD3IGMTIGAA9yBjEyBgAPcgYxMgYAD3IGMTIGAA9yFhYV3o2P\/DAAw88sLnniuTlXUMNLMvy5is9m4MuuunIGAA9yFhYUWZsqEuy6KYjYwD0IGNhkTEyBkABMhaWI2OW0pQjYw9Nvefv3btnfcJePGvGHC8KGcaGkDEAepCxsHwy5lLveccRlueTZAwAfJCxsHwz5khP+QWu5ys96hqqPl05OrM9yUlFAPBDxsLyyZglLbbY1HvePWMyBgD1kbGw\/K+NrfPMmN\/zPmcdyRgA1ETGwmpuxqpXvMyXc1IRAAIhY2E1NWPOS2NkDACCIWNhtSJjfveLbPSM5XK5TCaTQmMymUzAv5SNscMDbm8mk1leXl5YWJjHBkXGwmruSUW\/+\/G9M+ZxF0g7zTc1Y9lsNp1Om0MSGpHJZNLpdDab\/ZHs8CDbm81mM5lM3X2CWCNjYTX7Fg\/rL4R1Ddlf736z769Qt0NzM5ZKpXK53Orqaj6fLyCsfD6\/urpqGEY6nf4x7PCA22s+a25pERsUGYNYEzNm\/ms6n88Xi8W1tbUSwlpbWysWi\/l83jzY2vA7PMj2mkechULB3NI72KDIGMSamLFUKrW6ulosFhllGlcqlYrF4urqaiqV+jHs8Lrbm06n8\/n82tranTt37mLjImMQa27GKgMNGre2tpbP52tnbCPt8Nrbm06nC4VCqVSKephFa5ExiDU3Y+ZAE\/V4uEGUSqVCoVA7Yxtph9fe3nQ6XSwW73AottGRMYiRMbXI2AbeWPghYxAjY61TLBYNwwhyu7lhGKurq45dF7uMtXR7tW0sWoSMQYyMtUixWMxkMtPT0zcCuHnz5sLCQqFQsM4hXhlr9faq2li0DhmDGBlrkUwmc+vWrZmZmUQiYf7Srp9UKjU3NzczMzM\/P2+9XyNeGWv19iaTSfN+lho37ptvn52dvXHjxtTU1MzMzNLS0uzs7NTU1I0bN5aWlsy7Ohu3urq6uLh4\/fr1q1evTkxMTE5OzszMmH8XUoVCIZlMTk9PT01Nzc7OptPpylPpdPrmzZtXr15dXFw0D161yGbvXJs0p9Lycmkld2fxujmVcstrhUwhN2lOa\/kl6bzJGMTalrHpgc5NVZ0D0\/XGxemBTuHL1hfROTB95870yEjd9zpnJX+Lv2QyOTMzs7y8XPdbJ3K5XDKZNEd28y4GU6nhjNn3+abukaZtXfu3N0izs9ns+Pj48ePH+\/v79+\/ff\/To0YsXL54+fbq\/v\/+dd945e\/ZsIpGoPYfgGzs8PPzmm292d3e\/\/PLL+\/btO3bsmGEYIWaVzWbHxsYOHz7c19f30UcfTUxMVJ6amJg4fPhwT0\/P\/\/73v2QyGXptzR27urpq\/U3z1dXV0DO8c\/3a3X\/9szxdGL67OHX37L7yNDVaNCZzN3rMqZAcls6bjEGsPRmbHui0jaIj3fVH1YAZqxrprsxT\/N5Qb6kpkUjcunUr4DcnZbPZpaWlmzdvNi9jZsKc+7yZW9je7Q2SsVKpZBjGV1999e677\/b19X3xxRerq6srKyvnzp0zk\/P+++\/ncrnGN7ZUKiUSif7+\/r17977\/\/vvfffedYRjhAlkqlbLZ7MmTJ\/v7+0dGRqwnWldWVr799tv+\/v4G61soFK5fvz46Ojo2Nnb58uVz58598skn58+fDz1DMgZd2pKx6YFOZ7RGuuuNqdKuWF+vI2Ozs7PB914ikWhmxixNb9kmtnV7A55Bzefzly5d6u\/vf+utt7788kvzwUuXLr311lvPPPPMnj17UqlU4xtbKBRu3br12muv7d69+\/Tp09lstpG5GYZx6tSpvr6+CxcuWB8vlUrXr18\/ePBgg\/O\/ePHiZ5999u2336ZSqUQicenSpffee29wcDD8HMNm7LzL8vKyY95kDGJty1jN8dNy9qsy9ppvGuh2nhObHujc1D1QfkP3iPmyEcvps87Oyn87zja6HqzMR3S6MxDHsG7+8abFzMzM3NxcZc83NWP1drhjH8ZhewNmbHV19auvvurr69u3b9\/Zs2fNeZ45c6anp+cf\/\/jHG2+8kclkGt\/YVCo1PDy8Z8+e3t7e0dHRBudmGMaJEyf2798\/POw8dpmamjpw4EDojK2trS0uLg4NDQ0ODn7\/\/ffmgwsLCydOnPjggw\/Cr3EicffCsDndmZm+k0vcnRotT4lbpcJyITlsTmsrN63v+93vfvfb3\/7W\/EH7zW9+89BDD128eNExbzIGsTZdGxvp9o+E9Yyj48TgJtvxlfmM42xZZcT2PRqzHZjUn0+TOIb148eP\/+EPf\/h\/Fg899NCOHTvm5uZakDGvYzEr1xlH\/dsbPGMXL1588803X3311ePHj8\/Pz4+Pj+\/fv\/\/ZZ5\/t7e09d+5cQ9eE1t26devQoUM7d+48dOjQDz\/80ODcDMP4+OOP33jjDfeJvuvXr7\/99tuhM1YoFK5evXrw4MG333777Nmz8\/PzuVxubW1tbGyskZOKxVI+W1g2p\/yakSnmxrPXzGkxn8jmSxPLBXNaMmxfMbO4uLh9+3ZzKHjooYcmJibcfx1kDGLtvFPRdlBUtx+O62m2XPk97pWx6elp52xrzqdJHMP65OTkO++8s3nz5l\/84hc\/\/\/nPf\/3rXz\/11FMjIyOVUbuZGXNsi22\/e217HLY3yJ2KpVJpZWVlZGTkjTfe2Lt3b39\/\/2efffb222\/v2rVr586dR44cMb8KRHrvnMPa2tr4+Pju3bv\/+te\/njx5cn5+vsEZ5nK5\/\/73v6+++uqXX37peGpycnL\/\/v2ZTCbcnAuFwuzs7Hvvvffiiy\/29vYeO3bs22+\/XVhYuHXr1vT0dOgVzhaWJlPnzWl55eb3mWvP\/PCqOX26ODKxVNhzLmVOX95Ycbx3bGzsueee+9Of\/jQ6Orqy4ny2xJ2KCCGiG+4t9xv4HTl4jMWuXPk97m7SSPXk5Kba82kSx7Bu3kT3r3\/9a9OmTb\/61a+eeOKJEydOWL\/NvR1HY377MA7bm0gkzO9BXqvJMIzz58+\/9tpr3d3dx48fz+Vy6XT6448\/fv7557dv3\/7aa6\/dvn3bzGFo6XT63LlzTz\/99Pbt27\/++mvzS\/cbkc1mh4aGenp6zp4963hqYmLi9ddfT6VSoWeez+dPnz7d29u7c+fOXbt27dq1q7e395NPPrlx40boeWbyS5Op\/5nTknFjLD1ZydiZheEfFvOVjH0xZbjffunSpdOnT\/vNnIxBLLLfG6uMpC3PmFkw11PtzZhhGOl0+urVq3\/+858feeSRQ4cOLS8vO4bpll8ba2PGmr69wTP25ZdfvvLKK3v27Dl+\/Lj54MzMTF9f32OPPbZt27bTp08vLi6GHsHX1tauXbt2+PDhp59+uqenZ3JyspFZmbLZ7NGjR\/fu3fvpp586nhofH3\/11VelGZudnb1w4cKJdYcOHdq3b19PT8+uXbv+8pe\/PP74452dnU899dTf1vX19X3zzTfB599gxmojYxBrR8Y8B826Q2qzMjbSbZt95RbJtmfMHItPnDjx4YcffvPNN+6nmninovdZw\/ZmrLnbGzxjn3\/+eXd39\/PPP3\/s2DHzwXw+\/5\/\/\/Ofhhx\/u7Ow8ePDgzMyMdGy1GhkZ2bt37\/bt2wcHB2\/fvt3IrEzZbPajjz7au3fvsWPHlpaWKo+n0+nLly\/39fWl02nRDJeWlsbHx0dHR0dHR4eHhy9cuDA6OjoyMvLpp5\/u379\/27ZtDz\/88JYtWx577LF\/\/\/vf\/f39J0+evH79evD5rxazS8YNc8rmE\/MrS2cWhs1pMntzMVv8Ysowp6mE+MCXjEGsPUdjrt9Zsg6zPv\/dSMash3jWW\/vLV4k8h\/J6t0UIeQ7ruVwukUgkEgn3\/xyyyTfcu383z3pQ2q6MNXF7g18b++yzz\/bs2bNjx46hoSHzweXl5Xfeeef3v\/\/9H\/\/4xw8\/\/HBubi7UJaFSqVTK5XLHjx9\/6qmntm3bdvny5dBXrRzrPDo62tvb++abb166dGl1dXVtbS2Xy3333XcnTpw4c+aMYRjh5lwsFufn5+fm5rLZbKlUyufz33\/\/\/QcffLBjx47HH398165dyWQyxGwzudXxG0vmtJjIFVeKubkVcypkCqXc6p2pJXMqJXLSmZMxiEX0LR6OQdT\/hvuQGVu\/FtY9csd2XaxzYHo9V66h3PqWxkX8e2O2TXLuWp9rh9Xna\/0pou0NcjRWLBaTyeTJkydfeOGFv\/\/97wcPHsxkMplM5osvvnjxxRcfffTRbdu2TUxMGIb4TJc5c8MwJiYm+vr6Ojs7n3zyyenp6QYvs1XmnEgkDh48+MILLxw4cODGjRuJRGJ8fPzw4cP9\/f3ml0+Gm\/PKysrFixdPnjw5NjZm3XVHjhx55JFHnnnmmUQiEWK241OLu946Z05nL07lbhvTx2fNKTmeLl1fvPvm\/8ypNDolnTkZg1gTM5bJZMxbjwIN8xtdU77VYmVlJZPJxGKHt3p7g2RseXl5eHi4v7+\/u7t79+7dr7zyypEjRw4fPtzd3b13797Dhw+bDat7ZtKTYRhnz57t6+vbu3fvjh07nn322X\/+85\/Xrl0LMSu3YrF4+\/btM2fO7Nu3r7e3t6enp6+v7\/Tp09euXWvkFhLDMC5cuPDSSy999NFHhiXeR48effLJJwcHB7PZbIjZkjHo0sSMGYaRSqWsA9OPmfU7Bmvv3sp3DE5PT1v3XrFYdJ+LU7vDW729QTK2srKysLAwNTU1MTExPj4+MTExNTU1NTVl\/vetW7eMsA1bW1srFApzc3PXrl0bHx8fHx\/\/\/vvvx8fHpVetasjn84uLi5X5X7t2bX5+3gh14FhhGMbw8PDu3btfeOGFo0ePDg8PX7x48fz58++\/\/\/6hQ4dmZ2fDNZKMQZfmZiybzWYymXw+r+QQIULmN75PT08vLS2l02m\/L33PZDLJZPL27dvT09Nzc3Nra2t37twxL2OYb4nLDm\/19ga8xSOOstnsJ598Mjg4ODAwYB4+mpk5cODAu+++e+TIkUwmE27O+Xz+5s2bn3\/++cmTJ8+dOzc2NjYxMTE2Nvb1119PTEyEXuGF5ezZi1PmdO1WIp\/OJ8fT5mQsGKXlbGl0qjzNiE9akjGINTdjhmHkcrlMJpP60Usmk4uLizMzMwH\/\/1uzs7OJRKLy9kwmE\/AvRckOb\/X2buCMpdPp\/fv3v\/zyyy+99NKLL764e\/fu5557bufOnc8++6z5PZDhrmDFFBmDWNMzhgrz\/62VTCYT9SSTybrnD\/Vr6famUqlsNpvP54vY0MgYxMgYYsG8d39lZaVQKEQ90qKFyBjEyBjiIp1OJxKJXC5n\/h8gsSGRMYiRMcSIed4ykUgsY4MiYxAjYwD0IGMQI2MA9CBjECNjAPQgYxAjYwD0IGMQI2MA9CBjECNjAPQgYxBrxZdRmV+dBwBSZAxiTf9qYMMw7t69G\/VmAYglMgax5mYsl8tFvUEAYoyMQayJGctmsxyHAWgEGYNYEzOWTqej3hoA8UbGINbEjGUymai3BkC8kTGIkTEAepAxiJExAHqQMYiRMQB6kDGIkTEAepAxiJExAHqQMYiRMQB6kDGIkTEAepAxiJExAHqQMYiRMQB6kDGIkTEAepAxiJExAHqQMYiRMQB6kDGIkTEAepAxiLU3Y5OvP3ifw9ZT1icffH0y4IrrnBWAhpAxiLU\/Y7YmnNpabYa8PfpmBaAhZAxiEWfM+kiD7VExKwANIWMQU5ox+3k+r4zonBWAhpAxiEV\/UrHy5+qTp7Zark5Nvv6g9VqV7lkBaAgZg1jkt3hUY1AJxuTkpPNN7iMfnbMC0BAyBrGoTyqe2lo5Ped48tTWmifwdM4KQEPIGMSizpjlXJ399N19titSQdqjYVYAGkLGIKYxY9ZLU+UXhG1Pu2cFoCFkDGJRZ8zrnkBrIcrXrYK0R8OsADSEjEEs8ls8qimwtMNyBerB1ydttwjqnhWAhpAxiPGdigD0IGMQI2MA9CBjECNjAPQgYxAjYwD0IGMQI2MA9CBjECNjAPQgYxAjYwD0IGMQI2MA9CBjECNjAPQgYxAjYwD0IGMQI2MA9CBjECNjAPQgYxAjYwD0IGMQI2MA9CBjECNjAPQgYxAjYwD0IGMQI2MA9CBjECNjAPQgYxAjYwD0IGMQI2MA9CBjECNjrXDfffdFvQpALJExiJGxViBjQDhkDGJkrBXIGBAOGYNYezM2+fqD9zlsPWV98sHXJ2u\/2+sFdd\/Y9kWTMSAcMgax9mfMNuqf2lrNSesz1rZFkzEgHDIGsYgzZn2kzRlr5aLJGBAOGYOYxow5XuV4\/PWt5XOClZf4PR7doskYEA4Zg1j0JxUdSajTkvus5SmfE\/R7PLpFkzEgHDIGschv8ag2J1hLPO7L8Hs8ukWTMSAcMgaxqE8qntpaOZoJ1BLrcdaprWZC\/B6PbtFkDAiHjEEs6oxZotPujLVw0WQMCIeMQSxuGZM8Ht2iyRgQDhmDWNQZ87zr\/dTW6k1\/lpsomnuLRysXTcaAcMgYxCK\/xaOaFmtoLC\/cemr9nkLH3e2VVvk9Ht2iyRgQDhmDGN+p2ApkDAiHjEGMjLUCGQPCIWMQI2OtQMaAcMgYxMhYK5AxIBwyBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBjEyBkAPMgYxMgZADzIGMTIGQA8yBrEmZiydTke9NQDijYxBrIkZy2azd+\/ejXqDAMQYGYNYEzNmGEYul4t6gwDEGBmDWNMzZhgGx2QAwiFjEGtuxkzZbDYDAHJkDGKtyBgAhEPGIEbGAOhBxiBGxgDoQcYgRsYA6EHGIEbGAOhBxiBGxgDoQcYgRsYA6EHGIEbGAOhBxiDW1Ixd2Xl\/h9OWgWbMuTL7+3deadr8qnOtssw\/1OLMudnf5p6R147y310DWzzWzmsTwu2cgS3uxVYeq6y7ZSMaWxxQCxmDWNMz5jFe1xru1t\/iNZbWn33Druy837bcgS2NlffKzvs7tmxxbEvN9a63Uc58eKycY99JdqnH230eq65H0PkCIZAxiLU4Y0YzR73mZ+zKzvud6zawpYHDDHNbnblpJGP2vee5LxvdLcKMteaYGDCRMYi1PmOWVlzZeX\/Hlp3lU1LmcO93Es9y2q0ynFpfYJ5oKz9lPUe3\/mrzxQMes6m7wnXWxz\/K6wl0dKyBjDmfdeXFsV5+u9Sx511rHfSk4oB7NwTaM0BAZAxibciYMbCl\/Kg54nlmyfZHawYsg6xtSLX1yhGv6rLWZ+93Pq5y3cljtb3Xp0Z3qgdy9sU1kDFnYrySY51DrYz5VUZ4bcxd9\/p7BgiKjEGsTRmrjon+Ryl1T1tZDgiqT\/sN9NIjIvcRReUtQVrieDj48C7PmPPVgTPmc6xUvYPE426T2hkLuGeAwMgYxNp+NOZ\/K6BvNqwv8GqNy\/qJvRC3HQ5s6ehwrK3vItzvtGfTdRQp2GeeM23saMxvKeGPxgLuGSA4MgaxNmSsOkw2I2NbBmyHJL7jc8iMeYzXwd7qeUzjudk117POs\/oyRrXQVGQMYm29UzFgxmqfVFy\/57v8Cr87C4NkrPaDtqzWGa09TtpVH2ogY9I7FdubscZu6wQ8kDGItfX3xryOLWw3YXjcIWH5b+fpLMuLK3OtzDLY0ZjlHKJlhZ2L81mE4fUujwcbyZh1aT4XuGxz8NmlLcpY\/T0DyJAxiLX6Wzxso5pP5tZPwFWuoTmf8Hq7dQC1LrfecUm9la6+yL04v6s\/NfrScf\/OKzV3S4ATc9XzlZ63T3hsqWuXtipj9fYMIETGIMZ3KgLQg4xBjIwB0IOMQYyMAdCDjEGMjAHQg4xBjIwB0IOMQYyMAdCDjEGMjAHQg4xBjIwB0IOMQYyMAdCDjEGMjAHQg4xBjIwB0IOMQYyMAdCDjEGMjAHQg4xBjIwB0IOMQYyMAdCDjEGMjAHQg4xBjIwB0IOMQYyMAdCDjEGMjAHQg4xBjIwB0IOMQYyMAdCDjEGMjAHQg4xBjIwB0IOMQYyMAdCDjEFscXGRjAFQgoxBLJlMJhKJbDYb9acXAMgY5AqFwsLCAgdkADQgYwgjl8vNz88nk8lMJpMDgOiQMYRUKBSSyeTCwsI8AESHjAEAYoyMAQBijIwBAGKMjAEAYoyMAQBijIwBAGKMjAEAYoyMAQBijIwBAGKMjAEAYoyMoWz5\/\/xfJiYmpiBT1MOVDRlDWeQ\/GExMTHGZoh6ubMgYyiL\/wWBiYorLFPVwZUPGUBb5DwYTE1NcpqiHKxsyhrLIfzCYmJjiMkU9XNmQMZRp\/pgCiJbm8YGMoUzzxxRAtDSPD2QMZZo\/pgCipXl8IGMo0\/wxBRAtzeMDGUOZ5o8pgvvlL38Z9SpgA9I8PpAxlIk+pt9cPs+kcPrb3\/5GxtAKZAwxQMY2wETG0CJkDDFAxjbARMbQImQMMUDGNsBExtAiZAwxQMY2wETG0CJkDDFAxjbARMbQImQMMdCKjL28qcPtZ50HWjKIH3n0Z62beeSLazhjV3o2P\/BA15DXow94POH59s09VwJ\/ngJZX7xD3bVxziPYG4a6pPPWr\/r3Yt+62n9fttcG24FkDDHQtox1dHR0dPzkiSMx78oGyFg5IoHi1NaMSVLmnWdPZGyd9bUBdyAZQwy0LGO\/ftn24IEnftrR0dHR8dNHB2PdlbhnrFyQaEd17yF0qOuBwHmVZOzHhIzhx6hdGas83vHgS3HuSqwzVg6F1+BVfsr5vHVYXP9vy0udA6bPXGqulOv91plaZ2hfEfcqWB92zcN\/bTwXcc+rCI5HrG907AjrqnQNDXU5XuCxm7x2yVCPfa6W+dRd6eoLLEte3xM+O9ALGUMMtDNjZgM6Nj3\/zeXzg50\/cZxjfHlT9axjeQ7m6ysve+nXHucn17sy2PmTynPWUj9wz7IAAAcPSURBVFofty7RtZLm8aLlkVCLqx53uq4Iri\/x+QcrTzfp2DRQxsyBzWvQso+JtrHNlTGXytBbYy7+K+X5TK3lbe654jUKe73WFm\/vjPku4l69jLm3tvJSjx1R+9nNPVc89smVns3u+HUNBVnpri77K5x7goxhY2lrxswh\/qePDgbKmC0h9hpZ0lJOnfdFON931ctYuMV5P7veKu9Lhpueb0PGetbHLY8xy3Wa0XzA\/LNXVhzhsrzQby7eK+X5VLU5rhnYHrDPwpVo62Gdf8ZqLqJmxhzztDzj3BH2U6W1dtN6pqxPODapWrFaK+2uZvnVnFTExqQ6Y9Uh3jyCsbzeDMZPHx1cL0fluMcs0M86D\/gdYJmvrJmxcIuzbYJ1iebh2nrGKgs1l+K5o5qbMbM+Pc6BsfoCr3Ni1ZbYhmDryOdoju9cPFeqXsZcj9qOLNwnS51n5Lp8kuPDtYj6GfP6Z4FHvS1Jrb2brB270rN5c09Pl+2w2P1vEO+V9vk7ImNClb1r302ia7htY\/lBF18xDnzjslrtzdjzD3YEz5h3fpyT+2KV5ZHqQZXr9F2tjIVcnOVsodchl3u3+O+oZmfM55Dpns8psMqPqde1McfMq\/fL+c7Fc6XqZ6zu2bNar6v+XNbKWI1F1D6p6HqjRyms22SvX41FVv6rfIXL+UwjK03GRDyvLyrNmP1qbMg3k7FAGZNeG\/M6phFlrLrQqvJs62ZMvji1GXOeqrJ+XnVlzOOAx3HQ1cyM1VxE3Vs8XFtdubUibMYqtar8Tle5Y5U\/N7bSZEzE5x4ejRmz\/whIc0TGJBmz3qnYnqMxzxXwiUqTjsb879rQkLF7rutItYezoBkLOCj6rpR13SwDsu01tqtFrpOK\/qOKb8bqLML1Ptd9lB5vDHBSseZuGup6YHNPT5f16G5zz5ClYrVXmow1kf0fHT5XO+\/du+eoiPvfiJaXui5e+r+5Ghefs5uuNa3c2+Nz42zXkHWb3Pf4+j3v3hnufxnXfLPjwLb5\/xCI6vfGrJeUvqme\/fO7\/6LOxaqah0euVv300UHX3f\/2C1fhFleeifVZ15Wz6DPmDJnrXgLrBZagGas9lyAr5fx1AOfbHVej7Ctju5Gh+kida2N1FmGfqW38qXEJKsgtHrV2k\/OXIpx3r9ReaWHG6g8kZMw1dDsH4Rq36NbPWL27hL1WwG9FfQvhe7qi5j3IlgV6nkWody7EfzscL2iC9n6Lh2XIrnnLn3t8r33rYP1rYxblF9vup3euYbjF+ZxX9DuNaXmkehqz1uXDJmXMOdZ6fUg9alHnLFuNuXiuVO0fHN8XOX\/ybPcHes6r3p2KvmvtPGfY1eUoQo3l+e6JurvJ+TfmPNSsudLCjNV6o4mMlY+Gq7vKXor1v0\/HbjX\/WC9jNd8c+KYN21K8Ouaak+9Pj7Nb1X\/LenyEfVbTMXPn3VDV18cxYx6XmiwhefClmicVPcrn\/EUun644g+TzK2U\/eeKI67bGUItz\/N6Y9X56RRlzHTT4nVsXZKzGXHwW7lTrBsXqPzWdkfEOhPNaRp1\/yHovwvEj59hcv+U5NtC8Q9Q\/RF7\/xnCclHS+xH+lg2fMsQPJmJv7IMd9wOOuhvVwuk7Gar\/Z4\/xjvdW0\/NHr9KTfBb56z99zzcmyhDpvDrY6jWpFxpjaPPEN95oFPH2nExlzHVT0WB72P6\/g0ynrEF7nzcFuvKhzf5PtNX5X7eo977MQe8Z83uzVw3hcG2Nq80TG9HDeB+K+GhYrZMxvKNeRsRrn590nFUJmzPmLB94nFckYU2MTGVOkxlWzGCJjXqeYXUO6z4gsPqloFSRjtSrmvhwVLmPOS2OhMsZJRaZ6ExnTpcZVs7ghYx4XfawPO4dpzz647+rzvMWjblyc\/ILgeLwpGXMflQbKWHxv8WBq80TG0CJkzPN8mOewbFHzTnXPJrjfXD9jrrucKuz9bPCkot8hX7CMud++eXO0R2N\/g1ZkDK1AxvxuQvW999QxOltL1jXkcfzk9+a6GfOvmKNjDd\/iYd2IriH76+u\/2fb+rqFor439Ero16yMBVPyYM4YWifgWDwA\/KprHBzIWAx5Hr82vmOqPKYBoaR4fyFgc+F1Za+qtT5o\/pgCipXl8IGNx4brTpdm\/gaL5YwogWprHBzKGMs0fUwDR0jw+kDGUaf6YAoiW5vGBjKFM88cUQLQ0jw9kDGWaP6YAoqV5fCBjKNP8MQUQLc3jAxlDmeaPKYBoaR4fyBjKHB9TJiYmJr8p6uHKhoyhLPIfDCYmprhMUQ9XNmQMZZH\/YDAxMcVlinq4siFjKIv8B4OJiSkuU9TDlQ0ZQ1nkPxhMTExxmaIermzIGAAgxsgYACDGyBgAIMbIGAAgxsgYACDGyBgAIMbIGAAgxsgYACDGyBgAIMb+P7\/oUERMBCnPAAAAAElFTkSuQmCC\" \/><\/p>\n<p>To fix this issue, you can use a small jQuery plugin named <a title=\"gregpike.net: Twitter Bootstrap File Input\" href=\"http:\/\/gregpike.net\/demos\/bootstrap-file-input\/\" target=\"_blank\">Twitter Bootstrap File Input<\/a>. When this plugin is added to your XPage, the button will look like this:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdAAAAHtCAIAAAAm27gkAAAgAElEQVR4nO3d63Mc5b3gcf6QfZXadwaTMBjbZ7Obc8g5p072QO0Gabd2q1JLJcuBChBjSzLBBpOTDeAEsI0sAoltfMEG3+UIE2zAxvebsGXZActCsSNbstFtRnPV3CQ9+6Ln0jPTM9PPr1szo9H3U\/3C6nu3Z77q6RlJ9ygAQEXcU+0dAIC5guACQIUQXACoEIILABVCcAGgQgguAFQIwQWACiG4AFAhBBcAKoTgwqlEIjE+Pj4yMjIMoCSCC0cikUjmwTQCoCSCC7l4PG48jEZHR8fGxrwASiK4kDPuJHi93vHxcb\/fHwBQEsGF3OjoqNfr9fv9wWAwFAqFAZREcCE3PDw8Pj4eDAbD4XAEQDkEF3LDw8N+vz8UClX7YQzMDgQXcsPDw4FAgMtbwCaCCzmCC2ghuJAjuIAWggs5ggtoIbiQI7iAFoILOYILaCG4kCO4gBaCCzmCC2ghuI5daWv0eDweT2PbFZ3ZWzocbMu08JW2Rrubdh3BBbQQXMeqGdyOFp1Nu47gAloIrmMEl+AC9hBcx\/KCa2piKoe5SSw3XSllnpDbZnNw82YSJtwRggtoIbiOFQlugXLT865aLScSXGA2I7iOFQ1uXiRTMxRMz5SzpSM7OXPFmzORWwrArEZwHSsSXFMEc7JYbnrhigkuUCcIrmPF7+GmWQa32PQi9xwILjD7EVzH3A1u9s6sMTu3FID6QXAdczW4+bdwCS5QRwiuYzMR3GLvwNV7cMPhcDAY9MMZ+39lrj5OuM3jDQaDXq93ZGRkuHoIrmPu3lIo9qkx6+BavK9WSe4GNxQKBQIB48kDJ4LBYCAQKPu35urmhNs53lAoZPxtaVceq2IE1zG33zQzf8C2pSN3\/sKFi\/7wRCW4G1y\/3x8Oh6PRaCwWi0MqFotFo9FIJBIIBObCCbd5vMZU40gT1UNwIedicI0rlFgslkgkksnkJKSSyWQikYjFYsYFbN2fcDvHa1zFx+Nx40inqofgQs7F4Pr9\/mg0mkgkqvt8qA+Tk5OJRCIajfr9\/rlwwssebyAQiMViyWRyampquqoILuTcDW7mKQHnkslkLBYrHdx6OuGljzcQCMTj8cnJyerWluDCEXeDazwlqv3MrROTk5PxeLx0cOvphJc+3kAgkEgkpqp9eUtw4QjBrVkEtzYPluBCjuDOnEQiEYlE7HwoKhKJRKPRvFM364I7o8dbOwdLcCFHcGdIIpEIBoMDAwO3bLh9+\/bIyEg8HjevYXYFd6aPt3YOluBCjuDOkGAweOfOncHBQZ\/PZ3xcvxi\/3z80NDQ4ODg8PGx+B2x2BXemj3d8fNx4h7DEx8uMxe\/evXvr1q3+\/v7BwcGxsbG7d+\/29\/ffunVrbGzM+ESHQwQXchUL7kD70keylrYPlHsGD7Qv1ZwtvYml7QNTUwOdnWWXzV+V\/iLFjY+PDw4Oer3esj8ZFQ6Hx8fHjQYZ7wsZnAc395w\/0trp2tFV\/njtfHcJhUK9vb2HDh3avn37li1bDhw4cOnSpaNHj27fvn3Hjh0nT570+XzOvz8RXMhVJrgD7Utznu+dreWf\/zaDm9XZmlmn9rKiRUry+Xx37tyx+XOooVBobGzs9u3b7gXXiG3+OXfzCCt7vHaCOzk5GYlEurq6Pvjgg23btp0+fToajU5MTJw9e3bz5s2tra179uwJh8MOj5TgQq4iwR1oX5qf187Wcs9+3QKa56+N4N69e9f+2fP5fG4G1\/TdZ8YOsaLHa\/P+SSwWu3z58vbt27du3XrmzBlj5OXLl7du3fqb3\/xm7dq1fr\/f4ZESXMhVLLgln+mm176ZShgLtbfmvyIeaF\/6SGt7aoHWTmO2TtOL56VLM\/\/Ou9dQMDKzHq2bHbbkBcj48rbJ4ODg0NBQ5sy7GtxyJzzvHM6G47UZ3Gg02tXVtW3btk2bNp08edJY57Fjx9ra2l555ZWNGzcGg0GHR0pwIVehe7idrcVzZr7fkHdb4JGca1ZjSt5r5Uxbil7h5lzslV+PS\/ICdOjQoV\/84hf\/zeQnP\/nJa6+9NjQ0NAPBtbq+NSu431D7x2s\/uJcuXdq8efO777576NCh4eHh3t7eLVu2vPrqq7\/\/\/e\/Pnj0bjUYdHinBhVwlP6WQc6FZtnR5931zwlpsvFVwBwYG8ldbcj0uyQvQjRs3duzY0djY+IMf\/OD73\/\/+j370oxdeeKGzszPTFzeDm3csOefd6thnw\/Ha+ZTC5OTkxMREZ2fnxo0b161bt3379hMnTrz\/\/vu\/\/e1vV69evX\/\/fuPH1fiUAqqmSh8LM72DU+xqzKIaBWEtNr6wnp3ZWxOPlF6PS\/ICZLyB\/sc\/\/vGRRx55+OGHm5qaPvvsM\/NvxqrEFW6xczgbjtfn8xm\/qSdZUiQSOX\/+\/B\/+8IfW1tZDhw6Fw+FAIHD48OHXX3\/9pZde+sMf\/vDtt98a4RYjuJCr2udwM8\/5GQ+u0dqCSZUNbiQSCQQCf\/3rX5ubm5988sldu3Z5vd68oMz4PdwKBtf147Uf3DNnzrz99ttr1649dOiQMXJwcHDbtm3PPvvsypUrjx49Ojo6SnBRHZUIruXTu+yT363gdrbmrD7z8YiKB9eoxmeffXbw4MGvvvqqcJKLn1KwvmdQ2eC6e7z2g3vq1KnW1tbXX3\/9448\/NkbGYrF9+\/Y98cQTS5cu3blz5+DgIMFFdVTmCrfgM6DmIBT5t5Pgmi+bzR9AS93NtIxOuTeaNFkGKBwO+3w+n89X+Gu2Xf5YWOFnnc0X+pUKrovHa\/8e7okTJ9auXfvaa691dHQYI71e744dO372s58tWbLk4MGDQ0ND4hu44XCY4EKuSj9plvd0L\/6xMGFw0\/dsWzuncu7fLm0fSIe1IDrmRZyr8udwcw4p\/9QWucednV7qqyodr50r3EQiMT4+\/vnnn7\/55pu\/\/vWvd+7cGQwGg8Hg6dOn16xZ88wzz6xcubKvry8SiQgubI1fzdPX10dwIedicIPB4MTEhN17uPXOlZ+8mpiYCAaDs+KEz\/Tx2gmu1+u9cOHC9u3bW1tb33jjjbfffnv\/\/v179+5tbW1dt27d3r17jdqWvS9hKRKJnDx5ctu2bQQXcq7\/EUnzU2guM\/9ugdKnN\/O7BQYGBsxnL5FI2PkjkjVywmf6eO0Ed2JiYmRkpL+\/v6+vr7e3t6+vr7+\/v7+\/3\/j3nTt3ItLaJpPJeDw+NDR08+ZNggs51\/9MejAYjMViNXLZVUXGb88aGBgYGxsz\/pK55a\/OCgaD4+Pj33777cDAwNDQUDKZnJqampycjMVidv4keO2c8Jk+XptvmlUAwYWcu8GNRCLhcDgYDPrnvPHx8dHR0cHBQZu\/H\/bu3bs+ny+zuPFHamfRCZ\/p4yW4qAeuBxcZxu9+HR8f95UzPj5e9u5B7ZvR4\/X7\/Zm\/CV9dBBdyBBezgvEJs4mJiXg8TnAxWxFczBaBQMDn84XD4Wg0Gq8eggs5gotZxLhr4fP5vNVDcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCE3Ez\/aa\/zIPFCXCC7kXP\/lNZFIZHp6utqHBcwUggs5d4MbDoerfUDAzCK4kHMxuKFQiGtb1D2CCzkXgxsIBKp9NMCMI7iQc\/dP7FT7aIAZR3AhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcpUN7o0Nj34nz\/Ij5omPbrhhc8drc1WofwQXcpUPbk69jizP1k2\/krW3KtQ\/ggu5KgfXPMZhJWtiVah\/BBdyNRrc3Ff5VsGrzVWh\/hFcyFX\/lkLm6+zEI8tNd1FvbHjUfE+1tleF+kdwIVf1N82y2cqk7caNG\/kLFV5N1uaqUP8ILuSqfUvhyPLMi\/O8iUeWl3z5XpurQv0juJCrdnBNr9RzX7x\/J+fOqZ1K1sKqUP8ILuRqMbjmW6ipGaSVrPSqUP8ILuSqHVyrzwOYW5a6v2qnkrWwKtQ\/ggu5qr9plo2WqXKmO6WPbriR8\/GA2l4V6h\/BhRy\/SwHQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFX2eDe2PDod\/IsP2Ke+OiGG6WXtpqh7IJV3jTqCsGFXOWDm9OnI8uz4Zv54FZp06grBBdyVQ6ueUyFg1u5TaOuEFzI1WJw8+bKG79heeqOQGaWYuNrZdOoKwQXctW\/pZAXrzLV+465kak7AsXG18qmUVcILuSq\/qZZNlH2qmfxTlex8bWyadQVggu5at9SOLI8c4Voq3rmC8gjy43YFRtfK5tGXSG4kKt2cE2NqnRwK7Zp1BWCC7nZFlyd8bWyadQVggu5agfX8rNZR5Zn3\/A3vS3l7ptmlds06grBhVzV3zTLRtCcRNOMy4+kP0+Q9xmsTNqKja+VTaOuEFzI8bsUAC0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IEF9BCcCFHcAEtBBdyBBfQQnAhR3ABLQQXcgQX0EJwIUdwAS0EF3IuBjcQCFT7aIAZR3Ah52JwQ6HQ9PR0tQ8ImFkEF3IuBjcSiYTD4WofEDCzCC7kXA9uJBLhOhd1jOBCzt3gGkKhUBCoUwQXcjMRXKCOEVzIEVxAC8GFHMEFtBBcyBFcQAvBhRzBBbQQXMgRXEALwYUcwQW0EFzIEVxAC8GFnKvBvbL6gXvyPd7uxpozq39g9RXX1pdda5Zp\/aLNGWvLXaxwRVYnqvjpan\/cYu+sDkF2ctofL9xsZlxm300H4Wxzsx7BhZzrwbUoS6knZnoRq2d9+dU7dmX1AznbbX\/c2feIK6sfuOfxx\/OOpeR+lzuo\/NBZ7FzeudM5pRaLFxmX3Q+7661XBBdyMxzciJvPT\/eDe2X1A\/n71v64g0s341jzw+gkuLlnz\/JcOj0tmsGdmdcZswjBhdzMB9dUtSurH7jn8dWpF6RGmIq9hDe96M488c0zGC+zU5PMr9DTcxszt1uspuwOl9mf4t8+0rHOK66D4OZPLQhh3n4VO6V5Z75gr+3eUmgvPA22zkw9IbiQq0BwI+2Pp8Yaz03LgOZ8aQ6WKQc5T\/6csuZlNrut9OqLvRrP3B+12G3r\/SlRyOzFce7mHAQ3P4ZWcTSvoVRwi\/VQ8x5u4feh8memrhBcyFUouNlnb\/Erv7IvWk0XWdnJxZKke5VZeJWWWcRO9fJG2w+RfnDz57Yd3CLXn9n35CzevysdXJtnpr4QXMhV\/Aq3+McAigbOPINVFQukX9YLPnLQ\/vg99+TtbdFNFC6ZG\/iCK3ONc2a5UmdXuMW2Ir\/CtXlm6gzBhVwFgpt9QrsR3Mfbcy7zipZEGFyLsthb1PI60fKwS+5nmam1F9y672sBggu5in5KwWZwS99SSH8yKTVHsU8V2Alu6ZE53wDKdMXiJXt2lIPg6n5KobLBdfaRjtmK4EKuop\/Dtbpey3lby+I9J9O\/81\/MmmbOrDWzSntXuKY7CKYdzt9ckU1ErJayGOkkuOatFbkRm7OGIqd0hoJb\/szUIYILuZn+SbOc51+RIKdffmfu9eZPsFrc\/FQ3b7fctV65nc7OVLi5YncpS5TwngdWXyl5Wmy8LM\/erbB8Q8riSAtO6UwFt9yZqUcEF3L8LgVAC8GFHMEFtBBcyBFcQAvBhRzBBbQQXMgRXEALwYUcwQW0EFzIEVxAC8GFHMEFtBBcyBFcQAvBhRzBBbQQXMgRXEALwYUcwQW0EFzIEVxAC8GFHMEFtBBcyBFcQAvBhRzBBbQQXMgRXEALwYUcwQW0EFzIEVxAC8GFHMEFtBBcyBFcQAvBhRzBBbQQXMgRXEALwYUcwQW0EFzIjY6OElzAPoILufHxcZ\/PFwqFqv0wBmYHggu5eDw+MjLCRS5gE8GFI+FweHh4eHx8PBgMhgGURHDhVDweHx8fHxkZGQZQEsEFgAohuABQIQQXACqE4AJAhRBcAKgQggsAFUJwAaBCCC4AVAjBBYAKIbhQSinvf\/iPDAwuDtV+RNcoggulCC6D20O1H9E1iuBCKYLL4PZQ7Ud0jSK4UIrgMrg9VPsRXaMILpQiuAxuD9V+RNcoggulCoJb7d3B7MNDyA6CC6V4tsAxHkJ2EFwoxbMFjvEQsoPgQimeLXCMh5AdBBdKOXu2TKMeVfIhNHcQXCjl4NkyPT0dDAb7+vq6u7svYvbr7u7u6+sLBoO6zSW4dhBcKCV9tkxNTQ0NDV29etXr9SaTyRndQ1RGPB73er1Xr169e\/fu1NSU\/QUJrh0EF0qJni3Gte3Vq1cTiUSVX\/3Cbclk8urVq4FAYNr2dS7BtYPgQin9Z8v09PTk5GRfX9\/Y2NgU6tHY2FhfX9\/k5KTN5hJcOwgulBIFN5FIdHd3x2KxSdSjaDTa3d2dTCYJrosILpQSBTcej1+8eLHaWcAMunjxYjweJ7guIrhQykFwk6hfBNd1BBdKOQhuAvWL4LqO4EIpB8GNo34RXNcRXCjlILgx1C+C6zqCC6UILqwQXNcRXCjlILhR1C+C6zqCC6UcBHcC9Yvguo7gQikHwY2gfhFc11UsuB0tHkNLh8XoxrYrldoRO660NVrurc6y+ktWU8WCu2eZx8Jjay\/orcPeAhfWPqa77grJ7tmeZR6PZ9megvFWcuedeQTXdZUPbm5cazK42d4KujnHghvW1N5sFVwjuuftrWJPk8fTuL7Txpyd6xvtzlph2T1rb\/Z4PM3tBeOt5M478wiu66oQ3Jy81mJwzb3VD+ccC25I0\/5mi\/\/t9Dlbutv2Klo7bcwZTU4rNZ2M6u7kzMvuWXxKKTUVT43vbG0scXD7mz0eT\/P+iu0lwXVdVYJrqpFFcHN6Z8pW4azpOS1G5S+czWCRexsFe9rY0lKw9tw1mY8pO1O56YUnw7QndhbOe7HgzrcscXCDmlK1zB05kZw2jrxpd2bc7qXmU\/TYmnOFY5futpo5OzZ4bs1j2UULnVvzmKf46kzryR+Ts6Ax9tyax\/IWCQZ3r8nd9O6lmb2xPrpgMB1c0wym\/U8FN2+3ih+3aXLxs1ACwXVdlYKbiUx+LvJnM00rH9wSC+detZp2oNiOFm1Z4ZpyN1V0enqDFnuZmVhu5eVnEBIHN6BpX7PH09h6oWB8JPmnFo\/H07QrEAgEzr75WOERPvbmWWPxjOZ9gUAgsOs561kDgcAFI1+FW7NezON5bldmJ1NrN+12aozFzj23KxDpamtM777h7JsNnoa1Z01bbPJ4Wv6UjBQ\/uvQeNy97LH\/9hftV7riLHZwGguu6Sge3sa0jp5K5TUu3KC8\/xpflgltyYdtvg+Vsxaq4BWvKjDBmK9xSzo6lJhd8hymym3krT89d2N\/ZHtxA4Mv1jR5Pw1tnA4Gzaxs8Fq9PmvcEArFJ4yQ0tl1RajJmZM1T+CJh2a5sviy3tqsp76R1tHhSmy8d3LNrGwpvijXtSn3HyBbXOAhTcXc1eTwtB2Klji6byrzHR1PBN4Lyx+0peCHZpFtcguu6ygf3Sk41yvQtNaalw3JqTnBLL2xx96Hcbpq+tLo5UexGdLnpqmBNFsEtsrC93ZEQB9evKRVciynpOvr9kcS0Umoy5vf7\/Tuz13HN+wpXcSaVP2Nmv9\/vjyS62xo9nqadOassEJtUSk0nIn6\/\/8ybP05vIjVvKmx5u22MyVw9Prczu6LJmN\/vjx1oSW3X2LHGtrYWT8PaM8bXbzZ4Gtu6YmWOzlh7S4exZ+mVpvcluxc2jtvT0pGZmrMW+wiu66oRXPOFWptpdNGXy8WKao5NmYXtvZVVfCWWt1ktj63c9CIbyQ1ukYWtyl3le7jjmvY1ezwNrectppxvbchMOv3GjwtPUcO60wWr2NNU5D+sYd3p3FUW2Gl1T6FpT3oLnuZ9ebttjAknDuTdE\/rxG8Z+jUe72ho9DW+cHh8fP722oWH9pcSBFk\/D2tTXnsb1l8LjZY7ufGuDx9O4vjO75c71jZlDz+6FjeMuuhb7CK7rqhPcgujURnCLr8O0WYfBzf94nPUthdkTXJ8mo5bnLKbsbvJ4PM3tIZ\/vwyXpc5RzVya9mHkVOfd0zRpaz\/l854zgWmztVKZ5uXdnmvdl1mr807Tb6THRycKHypIPfT6fL3RpfaOnYc0p36k1DZ7m9pAveqAl83XLgUTI5ytzdIV7bB6T3Qvd4y5+JkohuK6rUnDzH7HFb5kWX0PZWwpmdoJbqreFt01lwc2\/hSsKbi3dUtB7BhcP7qk3GjweT8uBqM93al1D+hAno8bEdQ0e6+B2rm+0\/k+dSoRKZWZ3U\/qUTRkZNHqfamrqevBUdu\/WNXhyEhxKZP6erfGfsswobuJAi6dhzRtLU4eSKu6HaxpSX5c7OrvB1T1uglsjqhZcy0\/m5gfFsmSF7+hbvmlWNoP5iqUrb7wrwS280rcV3Bp808yraV+zx9Pw1rnckanrzca2rqjX6z33VoPH41n2YXpq+pIwvdi+Zo\/H07Tb6\/V6vaGL6xs9Hs+P3ziVt7IlH6bXVLC1zDoa1pzKWcbj8TTv82b2IDM5vQPN+9JfmLeX\/lkF46to6oZDy4Go+esG49DKHl3hHpvHpIIrOO7iZ6IUguu6KgbX6qfPLC8yS36eyrJehQuXD25+y7JyS+\/wlkKxy2h7wS1cvLGxule4Y5r2Nhf5T\/Q0tl2OB8fGxsaCRkwKNLx1LncVSz4YGwvG82+pGuvqmhgbG0tnpnA3JtqtH0zNey33oKWlJT1xosvif7Bx\/cVges1dbY0eT0v7hHlLpumlj65wj81j9jZnd1HvuIufiVIIruuqGtz8Dz3ljSycP6e5LR3lfvDBYnzR4BbvbV5xHb9pZj6Ilo7c+csvnLN8S0fV7+GOarIObmPbFTUVD6TmCcSn8l\/+GLc53zwxOjo6mk3esh2jo6MTycKfDUyt66yRmbMW+zGRzP+QSOpzVTsK9qClQyWNH6rdm5pWbHvG3l9c39jSPpHdUntLywHz9FJHV7jH5jF7s3uhedwlzkQJBNd1\/Law2a7KwR3RFElarW4qHig+21Q8YHydnisQT91ATUZGckfkjE2NL1j3iMVCyUjq68zC2T1IRlJfZaYV215mas6oSDJ\/juJHV7jH5jG5e6Fz3CXPRFEE13UEdzaxeEXg0i+jqFhwMYsQXNcR3Fml2B1gp72VB3cY9Yvguo7gzjoF7x268XvJxMEdQv0iuK4juFDKQXC\/Rf0iuK4juFCK4MIKwXUdwYVSDoJ7F\/WL4LqO4EIpB8G9g\/pFcF1HcKGUg+AOonxv89MAAAq\/SURBVH4RXNcRXCjlILgDqF8E13UEF0pJg9vV1XXr1q1qZwEzor+\/v6uri+C6i+BCKWlwv\/76676+vtuoR998883XX39NcN1FcKGUKLiJRGJoaOjy5cv9\/f23UF\/6+\/svX748PDycTCYJrosILpQSBXdycjIajd68ebOrq6u3t\/fmzZv9mP1u3rzZ29t7+fLlGzduxGKxyclJgusiggulRM+W6enpZDI5MTHh9Xr7+vq6u7svYvbr7u7u6+vzer0TExP2L29lD6E5iOBCKemzZWpqKplMRqPRSCQSCoVCoVAQs5nxnxiJRKLRaDKZnJqaKv8gcPYQmmsILpRy8Gwx7i0kEok46kUikbB\/J8H5Q2hOIbhQytmzZRr1qJIPobmD4EIpni1wjIeQHQQXSvFsgWM8hOwguFCKZwsc4yFkB8GFUjxb4BgPITsILpQqeLYwMDgcqv2IrlEEF0oRXAa3h2o\/omsUwYVSBJfB7aHaj+gaRXChFMFlcHuo9iO6RhFcKEVwGdweqv2IrlEEFwAqhOACQIUQXACoEIILABVCcAGgQgguAFQIwYVT1f7FrbNetf8DUTkEF45MT0\/vOXPj4Rf3z39687wnNzDYH+Y\/vfnhF\/d\/cLKP5s4dBBdyU1NT\/3vdF\/Of2frPrx79X+9e+j+brjLYH\/7n21\/+06tH5j+z9b\/\/7lOtvx6G2YvgQmh6enrV7u75z2xt\/H3nv7715Q\/fuPAPr59nsD\/845sX\/vWtL\/\/HOxfnP7P1hQ+7uM6dCwguJKanpycnJxct3\/OPr3z+w9fP\/8PvzjHIhh++fv4fX\/l8Yctuwd9txKxDcCExPT2dSCTu+\/nmf3797N\/\/9hyDk+Gffnf6vp9vTiaTBLfuEVxITE9Px+PxeU9uePi3Z\/9+9RkGJ8MPf3d23pMb4vE4wa17BBcSmeD+YPUZBucDwZ0jCC4kssF97RSD84HgzhEEFxKZ4P6XV08yOB8I7hxBcCGRDe4rJxmcDwR3jiC4kMgE9z\/\/5jiD84HgzhEEFxIEl+BCgOBCIhPc7\/+\/LxicDwR3jiC4kMgE9z\/9+qhgWLjs3fufyg4PrpCspGDoePCpd+9f1lFmthUfuLdF1waCO0cQXEg4CG7Hg0+9+97tnLX1HLIRyvLDN9eVUoPflJntuE8pdf149SNLcOcggguJTHD\/7t8\/1xoWtXT3WK7xdveCF\/VWVTD8rVcp9e3fysx2zKeUun7M4bZcHgjuHEFwIZEN7q8+1xpa\/hJRSqm7fzON\/FuvUkpFjm\/++O9+9fmi5k3zn9zx0K8+XvD0O\/OffGf+k+\/Mf+5A7kpMk57ctODFzPgDnryZf7kjPds785\/evcgYmQ7uouZN6ak7HsrdyYeey6z\/Hc8vc7f73IH0gpsWvJjaomlV5vk1BoI7RxBcSGSCu\/jlT7WGbYNKqbEtK3PHfzgyptTY9cuLX\/50+VcRpbxblvz5mD+9sVuX5i\/Zn5pz5a7v\/ptpkooc+\/3bDzxvrOf6daXUwHVjzoVNG+cfGsnusf\/mcz\/ftfDlTxcf8yqlrn\/+\/nPdkfS0kfeMSS9\/uvjl\/Q\/829vv3cou13Po7e82fbT45U8Xv9x5wq\/U7e6lqQUnTn54\/bpS6tYl06pUz6GND67UOyeLX\/6U4M4RBBcS2eCuOqw1PN8TVSp87O22+U+0zX9i24KCGZZ\/FVFqpOdW7vZuXX5wxeHFqw4v2HBztGBneg7vXLjq8OJV6eCuOrx41b6m7nD+fP6bTcsPL\/7Cq5TquTWSO6m\/ecXhxasOL1x2ufCOx2j3FwtWHV68qvOEXyl\/OLUDweHnjS3mCx9\/7yPd00Jw5wiCC4lMcBetOqw5dJ0MZlYzsumJtvueaLvviQ2eFakZWr4yrhZjJz8wxtzsVUqp8LH3Plq0at\/mW0opNdrTlV7bzV6llL+\/acXhRauu9yilBq4vWnV40fK\/9CilVDS9ksPP98SUUr0nDy\/6wmtsu\/dken8CSqnIie2HF636qOlKWCml7t7M3duRzcsPLzKCm7P160adM2OevzahlBr9qlP3tBDcOYLgQiIb3Jc+kQwfDOdeqIaPta3\/Xssni176xLjJe\/2YeeY7o0qNXD2z6IWve5RSty7e93\/XZ4dPRpQKH9\/yyaKXenqUUgM9i176xKjq6LVLFps2Jn2VnfT8VxPpNZw57lfKf3OJef1tN0eU6jnyp0UvnT\/hV0r5tmbX1tOjlArceb5wVzVPCMGdIwguJDLBXfjiJ06HHan4Xvts78IXjeBGjm8zz5Mq6cJtA4X3Eww9R02zvfjJwqPegpWkh6Pe9PyFY3qsP0Gh1Ohfzi988fxxv1L+gZbCHSs1xtZAcOcIgguJbHBXfqwxPL99\/s\/euveZ3QWTeq8rpW5\/tWDlxy1\/iSgVPr7ZvNRXPUqpgd6F2+8UC27v8Y8XrkzHbuXHC4+OKRU+tqndYh+Ojimleo5ajum1uierlFKj175cuPJcKrjZtZm2WHSMrYHgzhEEFxKZ4D604qDGsP3uqFLqVue8p3eZxz+45NAXfqX8gy0rDjb\/JaKUuvbn9zypqbvuX39jRKnRr798aEXfdaVGLn90\/7Lssp6n18376TvfW37woRXXepRSt689tOLgQ8d9SqmRy4e+tzw957L35v103byndz10ZEwp1XPEtFfZMV+eCCh1q\/O+JftN+\/bOvJ+uu3\/ZwYdWnDWC25zdc9MWi46xNRDcOYLgQkIY3BVfngwopZS61Tnvp+sywy8uh5VS6k7fQ+ngKjW8MTW185pSSkVPbj\/40IqDWweVUuran7PLbryllJo4uT0vdn3XlVIq\/MX69Jx\/HlZKqcG+ksE92HJtQik1cvmjvH27fpzgwgUEFxKZ4C54oUNveP\/bIrcF\/Ftf6FjwQkfT1YhSkdFAzrTRaxdKLX7nmwUvdCww3lK7\/bUxZ8u1aMF80RPvdyxI5dW0SzljvrG4qxD8tuWFjgUvGG+p3W7KHk7OFouMsTUQ3DmC4EIiG9xfdgiGrXdyV3fnm8wkI7jHN184kf702PVjeYvnNHH06ws5402rWmD6AQml\/FtNI3PWmT8mu+ncfbtwIqhU8NuWvD0xb9FijK2B4M4RBBcSmeA++PwBd4emq2Glwsc2u7zaGh8I7hxBcCGRCa5nebu7w7IrYaXCx95zebU1PhDcOYLgQoLgElwIEFxIZIL7QMs+d4emr6JKRY9vcXm1NT4Q3DmC4EJi5oI7NweCO0cQXEhkgvu95j0MzgeCO0cQXEhkg9u0m8H5QHDnCIILiUxwv7tsN4PzgeDOEQQXEtngLt3J4HwguHMEwYVEJrj3L93J4HwguHMEwYWEEdx7n9p0\/5Id9z\/3AYOjYcmOe5\/aSHDnAoILCSO4Dz63ff6z2+Yv2cHgaHh22wNL3ie4cwHBhcT09HQikWjZcvrepzbN\/8UOBifDvU9tWrrpVDKZJLh1j+BCYnp6enJyMhqN\/td\/PzDvqY33Pr3lvme33ffs+wwawzPb7n16y7ynNv7Ly+2xWGxycpLg1j2CC6Hp6elkMjkxMbHti2sPv7hv\/tOb5z25gcH+MP\/pzQ+\/uH\/bF9cmJia4vJ0jCC7kpqamkslkNBqNRCKhUCgUCgVhj3G6IpFINBpNJpNTU1PV\/s9EJRBcOGLcW0gkEnHoSyQS3EmYU\/4\/8GNPfbiVeg8AAAAASUVORK5CYII=\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>To initialize the jQuery plugin, you have to call it with a selector which selects all DOM elements of type <em>file<\/em>:<\/p>\n<pre><code>&lt;xp:scriptBlock\r\n    id=\"scriptBlockInitFile\"&gt;\r\n    &lt;xp:this.value&gt;\r\n        &lt;![CDATA[\r\n           $(document).ready( \r\n               function() {\r\n                   $('input[type=file]').bootstrapFileInput();\r\n               }\r\n           );\r\n        ]]&gt;\r\n    &lt;\/xp:this.value&gt;\r\n&lt;\/xp:scriptBlock&gt;<\/code><\/pre>\n<p>The description of the button can be changed by setting the <em>title<\/em> attribute. Additionally, you can choose if the file name will be displayed inside or outside of the button:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdUAAABBCAIAAAAIW6lBAAALyElEQVR4nO2dWVbbSh6H755qJUFaRxIs7YIhwd7C7YQpcL2EPiSQ0MQYn8MD8QmHdN9Ok2Aby44nyZb6QVNJVaXBAUtYv+8pqvFfZelTqWSTPywAAABZ8EfWAQAAQEGBfwEAIBvgXwAAyAb4FwAAsgH+BQCAbIB\/AQAgG+BfAADIBvgXAACyAf4FAIBsgH8BACAb4F8AAMgG+BcAALIB\/i06JlhGsj6tQCLg30Jjmmav12s2m\/V6\/Qw8fer1erPZ7PV6UPCTAP4tLrPZ7Pb2ttFotNttwzCyDgc8AJPJpN1uNxqN79+\/z2azrMMBMcC\/BcVe+TYaDV3XM35UBg+NYRiNRkPTNBOr4HwD\/xYR0zSn02mz2Wy1WjOwjLRarWazOZ1OoeA8A\/8WEdM0dV2v1+vj8XgKlpHRaFSv1w3DgH\/zDPxbREzTnEwmZ2dnWVsCPCJnZ2eTyQT+zTPwbxHx\/GuA5QX+zT\/wbxHx\/KuD5QX+zT\/wbxHx\/DsBywv8m3\/g3yLi+XcMlhf4N\/\/Av0UE\/i0C8G\/+gX+LiOffEVhe4N\/8A\/8WEc+\/Q7C8JPJvVSVErlywGRcVmRC1GnsuXVRkQQt5paoK462qJNGgHwz4t4h4\/h2A5QX+5SIcsZVf\/1ZVYhOMzUnO2exfVGRutGnqLvIzWDxz+3d3lXBY2fyUro1kFT5trqRte0H4ke2uEkJWd5l0HsGyjw\/8yyXKvwsnrX+DkefSv75+59Bowfz7KyUHCs+\/toM\/Jmtit0SIXD5NUPK0LCctumD8yA4UQohywKTzCJZ9fB7Ov86ykHtluf71M5nm6Hp0plvVt0u4LpUTzIyKKCIz0B7nGqfWv+74qVZCFYLtz6f11P5lZyFn\/qVnJb1HC+bffkreKRGX18udxE1snSYoOTJMyzKNUdogHx8\/ssnMsqzZxEk\/3ZIjBvdOIYQo7xYW5QP7N4xTy5aoLAczg3om\/ExeXkyuG2pURBGZqf2rhpry6kQGkJw5\/MsGwdzTOCNki7olOUnhyr4VBRshTKSyqjKtB1uyuHfduHx2MqhIklQOPUpkcwfz\/NtLiSPPYOLQMO2Rl3a8tJ2X9BStbJywqS93eIX91N7JxopfleVkY4WIm6PaCacEKtqpJxsroSq93s5GsOudl140\/NH1eq5\/qQJU\/I5\/Q2GJx01li2chggf3r1fO\/rjtQ2bFYhd2ygYOvARa3WxVyn+sBBJEFJ2ZdP+X0RM9FCczSoTJmMu\/wlng3BRC96QI\/0ZUZm+FcfoVqY1\/y2VPCQa3Q+59z8mMazy+wILw\/KulZF8hRN76xKQPjL9UQkhpW9M07Xh9hR3hyvqxXd1D2dc0Tdt+wS+qadon22Zsb\/xqhLzY9oJ0WqfCdlI4wb3Y1ga1iuyGb3O8LhFp85jqsUSI+pcxEI\/OjVhZXQm3z8YVN27R4FLwwP7l7RxYHE\/Subz3WX6PbFXB+y\/qoksQUXRmOv\/yx8XJY\/pMRjr\/ypVqQJpBxbmzFLKRfRjn38jKid+oBXrhCZhpyUsI3s1Z4apVP5u54QjCDDXulmZ1\/NT9q2n\/KsuESK+PNe14UyKchYuyq2njKXX6T8e25QKF7bKr277NuL1tl0KTVlWJ0320f483JXY5Vtp2biC+gO1BUALeLhGiHo6jRuebM3R+lJj7Qvy4CbO6KqUV8IPv\/4aqUZcER7GhvdMQflX28oxcrdCuEUQUnZnKv7xnV\/fpVnhbSUNa\/14EJBKjOydFrXJzA\/6NrszZqogLkzrk7WSINrHj8i2mJaqHmMrJwlkEnn+7KXH8y8lxZdntDnTTsqzpuNvtdt\/6qzxln23ig2NDu3C32+0O9HpFJqT0NtAkw3hqWZapD7rd7of1Z961aZd1PBcK207x1pYv3voNTcfdbnd8qDr92oHJlYpKpM0P9vG6RORKbRwzOrt1tWpH5jbqxuJHkWDcRK16uYFWkpPYv9xVTVhZi\/avv+YNrIQK7196GVehksVzLRAs7Z6YysneisV82oEyop3puPzIdwYxlXkiz3j\/9z4l+woh0tZHTs7HLcnLer\/2jJ0i6dV7pondkuADk169DzbJ8Ja3AVHadXsgyn4obDvll36oBus8W7Pjuh\/VKjKR1t7f39+\/35Sk8mf9UCXSpnNM5PLnX\/cxo\/u4JREil0\/9nk\/Lsjd0P4oE4xa2kpxE\/uU8SluWFXqejvUv5wWJd8qLz+0o\/7JaZ7d4H9+\/udt\/4DooH\/4Vt8Fsxc\/t3+DLM9H+w9PxbycltjxPODk7JUKIctDvdN48d+cosHBxq9FNBPaDaaStk07nxPYvp7cjT4HBZ1Vl32vV\/icVtpsymrKnyvM3nU6n0\/9clom0cdQ52pCIctDvjA5V71g91PudTszo2IjpFD+KtOMWz0QUyX5\/HLVLFxhilH\/pbM77N2aLl7rYovwb\/k4ZeSj\/ikzCef\/GHVdG798YjdFzEh1D6v0HmiT+jdIvu6c0n3\/D279z+TdP+w\/pLmixf4\/WJEKIejjqdI5eSe4QpyM785VE+P49LbPPrpZlWdZM70dZZ6fkTtnMtqKtf0exzmrxyI\/ulUQCRu7r3v8MbH8oq7aA9UOVSBtrL52hOAJ+syE5x3GjS+rftON+TP8KXikTRn6R+w+h72n55zP3sqRfj4j2HwTX8wP5l\/ALM\/sPoe\/VsVe+IDspc\/o32D\/\/\/RtfbOx3Bbjv32KtGEZkslD6g\/iXfQ5I5N8cvn9rp2RfIUR6fRJMdFajcqU2arfbJ68lQsjqGzfXXTC61fYVQkhpp91ut9v9s7JMCHm2dhRq7PkbtyWmN68NaeMoUIcQouy3vQi8bDcAZd89oPtzfzJhH42c3Qn1cEQfS\/bQYkfHRkynOP6dY9zimYgizd\/fCeskeKUl2f+NOJkDjYdXYOL3b4xjqKXzb\/g3pKJo\/9K\/Kwnbh75DqBXOdnEC5vYv+ywefa8T3mUjN1a534aICJAzA8HZ\/s39B9EiO5l\/2eru\/TUr\/7ZSsqcIPkQiV84nvVar1erZbmGQXp8Em3j+j1arNwlvx9pt1YatVsu1DhvG8IB\/Mil73Ajs1Zmy12q1hjXOJyiXz3puy7WKTIh6MKR7ovKjR8dGTKfsKX6I6cYtnoko8PfPUhPz\/i2ClMVdfsO\/4W9XhRLZ8gEF+z8P5GxJiNKF\/hXrNyTg337\/Rg+CuusnknuovlrNfP\/3LiV8\/8qVC2s20Zwy2mTGXbhI6\/+8u7u78w24+ufd3d3QCN2V1Krb1rFtnWNOHEMj\/PUT5wtcfzIRqFXLsH\/5u+fkifqzoz8ry+rB0O\/pQFUP6fyo0bER0yl7fhQpxx0xExHAv2mhN50jhRp+2xZ4N5gG\/P2zbMnYvz9TMjB4zc0mmrjYbKLZx24pbeJsvhqDn8GEQKqTzrT9k1PJGDjHXmU\/AmPgHHl5ov683EDSwAiXEI+OjZhOCUaRZtyRMyEE\/k1DeDUZvaDlPc1HfzuLD\/y7ODjPC9nod37\/gicE\/JsC5mk8dkNBtKudCvh3gYh2jxetX9+\/P8DyAv\/mH\/h3wTAPLvM8tfwunn9vwfIC\/+Yf+LeIeP79H1he4N\/8A\/8WEfi3CMC\/+Qf+LSKef7+D5QX+zT\/wbxHx\/PtfsLzAv\/kH\/i0inn\/\/BssL\/Jt\/4N8i4vn3P2B5gX\/zD\/xbRGz\/1mq1b9++ZW0J8Cjc3NzUajX4N+fAv0XE9u\/l5WWz2fw3WEa+fPlyeXkJ\/+Yc+LeImKap6\/rt7e35+fnNzc03sFzc3Nycn5\/\/+PHDMAz4N8\/Av0XENM3pdDoaja6vr2u12tXV1fX19Q14+lxfX19dXZ2fn3\/9+nU8Hk+nU\/g3z8C\/BcU0TcMwhsNhu91uNpv1ev0MPH3q9Xqz2Wy328PhEIvf\/AP\/FpfZbGYYxmg0GgwG\/X6\/3+\/3wFPG\/hAHg8FoNDIMYzabxZ8EIFPg30Jjb0Touj4By4Ku69h2eCrAv0XHBMtI1qcVSAT8CwAA2QD\/AgBANsC\/AACQDfAvAABkA\/wLAADZAP8CAEA2\/B9YBm1s5YuRAwAAAABJRU5ErkJggg==\" \/><\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA7CAIAAABe225pAAAJRklEQVR4nO2d61biyBaA5532i5yBvMb0KMlLzJr2Bm9wzoyjNq2LN5iztGVkcTCylj9sul2eS9vQJijhGkJS50dCUklVEuJkIOj+\/jTWrr2rKqQ+koirvyMIgiCEfLfqCSAIkgnQBQiCEIIuQBDEBl2AIAgh6AIEQWzQBa8LC1kTln9uoAteEZZlaZrWarVkWa4jmUSW5VarpWna8nWALngtmKbZbrebzaaqqoZhrHo6CB9d11VVbTab9\/f3pmkuc2h0wavAviJoNpvT6XTF177IAhiG0Ww2e72etcSrA3TBy8eyrNls1mq1FEUxkTVBUZRWqzWbzZamA3TBy8eyrOl0KsvyZDKZIWvCeDyWZdkwDHQBkhqWZem6Xq\/XV316I8mo1+u6rqMLkNRwXWAgawW6AEkZ1wVTZK1AFyAp47pAR9YKdAGSMrQLJsj6gC5AUsZ1warPbSQZ6AIkZVwXjJG1Al2ApAztghGyPqALkJRxXTAajYbI+pAFF1QksJEqnGahdLWcuS3GVUngzjZJbvLMdcJ1QdJz8WgTILd9wQYutnMAm0exBS62cyEVssrRZth8V7CWTLnAv+8z6QJPBc\/Y0q\/PBYMkHIsAQrHGBmpFAUA8ji1QKwohFTLKUSF0vitYS7Zc4Nv5WXQBrYLke\/qVuWAwGPST8F4EEPZqbKC2JwCI72ML1PaEkAoZJXTF\/f7YsAixjPESZ5M1F1AbheMC31akdhTbdd6T0xRM9nZoyM0KM1NBkpjq\/kr0mrxOcXH2YFAzWSQ5cIm1Gpu6Luj3+1oSnJ3BBhwXaJqmVbdyALmt6uGGewhyW1W6n7BXq27lmJiDF\/IHI+tqmqZpVMQXjM483ACAjUN62I1Dtp7TFpyoU6i6lQPYOKQnH0jw1z\/c4Kw8nuy5wD3\/g2dysBsVi3dBRLL\/s56aQNhEQ7cZW8k\/VGh8PiBnlm4wrnh8hyXhukDTtF4SyiKAsHfBBi72BACx7L5k+PHA6yfkc9xgr3f+NheWGV2Xmwm5t+fxmWWRE8y9PQ9E7MUxa3aOhr3+wo8h6zoIBAAg5EBGkyEXCKWKbwP7t9t8mwR2hv1jnAsikxd+GugbhScDppLbYHdjR\/JNzAkz8guZZqD4vDerhpfogsDVY+EgIpi3N+3BZuBgVCQvGFn3fDsPnEtJ8Sg2c77j3VHtzPz2eW8ys7sKpStCZhPummkXsGeGPfXzt3nO8GvvgivfCR2z9ZwWqcKN+lwQncy5neASqBLwCzMoJykuTphKHBeEJC82nWXguqDX6z0lwXEBG3Bc4L4EqTKbOLHJiQThwdlVSQDIb394evqtAABSxZoOn9xoRXKC0XWHU4sQYod+8z6EF5jRU1kEAKEkz0cd\/qskeKsMXbFT1onNh3DnTq3rg+Mpas0VCULLRpExF9AfbyWqOfT6N2yz0\/sgJnmxJ3rhRbi39Ny1xcVDBvG7ICSZJ5UVPy94enp6TEJZBMjv\/cEG\/tjLA4hl96VQrHnBWlEAyO+czYPSyZhKHRyLAFA4ejzbyYe8f4WjuLqPj2c\/f88mUoOGZpZFABCPB+yEIlfslHVi7BBemaMCBNc8PpFCy0aRORcw+yEbLgivwVwAPtsFwd+t8u8R1scFj4+P3SSURQAoHLKBwwIAiOVut9ut2luk6gWplqrtDLaoWLZjXMRyXN39N\/O+vns7atCwTHd4dkLz175UfhF2CK8MO0Bk2Siy54Lgvgu\/PQ+vEHuPQLOIC6JUwN6iP88FwccFz3JBlu4RkrqgVhQAYHM\/2L6\/CQBCscbfFkEX5HdOebn9YzHkSMzGMXVPd\/Lz4zobd7tdp2XJLvBb8nQnb6+Lc9D2N+HFuID7jYPguc7dZOwzd+6zw9gdGiRsVwXaU3EBe320kAsy+Oyw2+2qSei\/FwEA4PufT73GU+fqXHzfV1VVre7mAfK7Va8D1VLdzQMAwJt9J2Z\/oAvFel9VxyeSLzYP26NF1bXLbu770sA3aNiMVGfnU6ukW5wrId7BoItEratfLwqcmH9Gi5FNF\/C+i8j9aI78ZRx3Y7HJ8S4IbjMPv4T+5D1C2MXHYi5g0wVhtdcFqqoqiRgZYe+jVDFGiqIoynyLeElUS3U3DyBJ\/hpC6VLXFEVRRg3uSXCiazF1NWe7BaEGDZuR8k4EAPEdtUi65Z3olHrzq6Ioyq9v3Je+ItXdvPduBtel6Se8g+ab0WJk1QXB35gFGtn+Ph1IlbjvGnHaQ10QroKADP70s0N6EVLF3z8+2ZcvVVb+vEBRlIeEjAz+102MkdPh3N4i514K1XK+mwcQjw3fJZGp95yePd30FxdKV\/PKkXV7uhm8UnV+H\/nPmMwHZ+dTS6RbPD1t\/hII0UXs18VL36Wit66R4f9qfKkkBGa0GFlwAfIXsXoXfHsGw8B\/smQMqWBPNwkx9R63paebhBhD+19CSKAnU5yKRtYN5Jl6z\/7Z1HtxmUMjuAJfiztTYxgIzV1Av\/bW5atI1yGEGHUqNQnoghcC5zpqRX\/Q4brg4eEh6emIzDkoAOMCbsdffgCAv\/30+\/zn33\/KAYBQrPe43SNAF7wUwp42LP1vu1wXfPv2rYM8g3\/84Lx3Yvmp0+l0Ptgu+MDtPDzmPC6QTiZPiYdFF7wkmEdvq\/iLSNcFnU6njSTn7xvzN88YtNvtdvvMdsEZv\/vA4DwFGTxjXHQBkjK0C74iyRlM7QM5HTgN3YlJiDnpxmYQQqI7RoIuQFLGdUG73X7eSYmsBHQBkjK0C+6R9QFdgKSM64KvX79+QdYHdAGSMq4L7u\/v\/4esD+gCJGVcF3z58uW\/yPqALkBSxnZBo9FY9bmNJODu7q7RaKALkDSxXXB9ff3p06f\/IGvCx48fr6+v0QVImliWNZ1O2+22LMt3d3f\/RjLP3d3d5eVlp9MxDANdgKSGZVmz2Ww8Ht\/e3jYajZubm9vb2zskk9ze3t7c3FxeXn7+\/HkymcxmM3QBkiaWZRmGMRqNVFVttVqyLNeRTCLLcqvVUlV1NBot86KAoAteD6ZpGoYxHo+Hw6H93\/Ik\/a87kL8a+30ZDofj8dgwDNM049\/X9EAXvCLsm4XpdKojGWY6nS7z1sAFXfC6sJA1YfnnBroAQRBC0AUIgtigCxAEIQRdgCCIDboAQRBC0AUIgtigCxAEIYSQ\/wNeB2zYWlsBdQAAAABJRU5ErkJggg==\" \/><\/p>\n<p>To place it inside, you need to add the attribute\u00a0<em>data-filename-placemen<\/em>t to the file upload control:<\/p>\n<pre><code>&lt;xp:fileUpload\r\n    id=\"fileUploadControl\"\r\n    value=\"#{document.Body}\"\r\n    title=\"Datei ausw\u00e4hlen\"&gt;\r\n    &lt;xp:this.attrs&gt;\r\n        &lt;xp:attr\r\n            name=\"data-filename-placement\"\r\n            value=\"inside\" \/&gt;\r\n    &lt;\/xp:this.attrs&gt;\r\n&lt;\/xp:fileUpload&gt;<\/code><\/pre>\n<p>Because I have added it to a Custom Control and use it multiple times on a XPage, I have changed the original code and added a flag to prevent multiple calls, otherwise all file elements are modified over and over again:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0sAAAB1CAIAAAAQvu1hAAAbf0lEQVR4nO2daX6byLqHz55YSUdaRye2tYobx0msLZxf7KTTcXsHt08SO8khiuJf3NeWbE2ebSEJTQg0+H4oqgAxCDAIlfx\/PpmpeIsXFQ8FlP91DwAAAAAAlot\/JR0AAAAAAACIGBgeAAAAAMCyAcMDAAAAAFg2YHgAAAAAAMsGDA8AAAAAYNmA4QEAAAAALBswPAAAAACAZQOGBwAAAACwbMDwAAAAAACWDRgeAAAAAMCyAcMDBhMAAAAAJEHk13QYHtCZTCbtdrtYLObzeREAAAAA8ZPP54vFYrvdjlzyYHjg\/v7+fjweX19fHxwcSJI0HA6TDgcAAAB4FKiqKknSwcHB5eXleDyOsGQYHtB77w4ODjRNS7iTGgAAAHh8DIfDg4MDWZYn0fXkwfAeO5PJZDQaFYtFSZKSPsMBAACAR4okScVicTQaTSKSPBjeY2cymWials\/n0YEHAAAAJIWqqvl8fjgcTmB4IBLIWSWK4hgAAAAAySGKoqqqMDwQDTA8AAAAYBGA4YEogeEBAAAAiwAMD0QJM7wR4BBZljGEIQAALA5kfLtWqxWiSRdheCBCYHj8giEMAQBg0TCPbxe0VYfhgSiB4XEKhjAEAICFhY1vF6hhh+GBKJlQwxsCftA0DUMYAgDAIkPGt9M0zX\/bDsMDUTKB4fGGpmmDwQBDGAIAwCJDxrcbDAb+JQ+GB6JkAsPjDU3TFEUR8fkzAAAsNqIoKorCkeHtZgRCZtdhdjr7M5LAIuJnNu0YbZBtg2\/JE8zwNMAJqqr2ej0YHgAALDiiKPZ6PVVVfTbvi2N4VptbSMMzBC+EqMHwwEKiqmq328XHMQAAsOCIotjtdrk0PIvPLaLhmQUvuKnB8MBCAsPjnVgf4gMAYiLEj51rwzPpj4PhWQTL5En2VemaDrOmNza8y+VxsS3SdCZjK91akrlOxkqzltsPhikSPxtPdYcm48jM8FTACYPBoNPp4NVJTtE0rdlsYpxqAHiBjGDcbDa1IF\/FEkRR7HQ6g8HAZ\/MuLpbhMauZ9pPp1UzLZhuex8bWfjk\/gucmT\/aSrLtyXU536BAlWzir8NkrzAkYHnfA8PhFVVWMUw0AX6h0BOOLiwtVVQP95Hk1vHR216JlVomi8jPlO2RyluF5buz72wnLXpwUz1YSm0FWs+\/JEpi+2Ka0LmFOFU7XtgsfDA94A8PjFE3TWq0WxqkGgEeGw+HBwUHQnjx+De+nRVNmCJU+J7PruNRieN4bOzzQnRWmadLpea\/by4Szlt\/bSnIwPJeN\/YUzDybU8AaAExRFabfbIl6d5ApVVRVFwTjVAPALGcFYURQ1yHt17XZbURSfzfsiGZ65Kyprmu36BNJN4cx2M2Njf98\/uBfi+KqcY91mLXfZidXwXDZ2UsWE38OLVUpAhMDweERV1X6\/n8\/nVVVNegAHAEAYBoNBPp\/v9\/uPxfBslrMYhudehmm3DzS86VFjnJ\/SwvBA1DDDi\/4BMIiNwWBAvoBO+iIFAAiPKIrdbncQ5Kkrz4Y3bVPur725lzDzKa0ZP4bnJXj2V9\/CGd70a3ihDG+RntIqgBP6\/b4syzA8vhjQtycjH3sFADA3QrxXJ8tyv9\/32bwvnOE5jpA3bTCO6mT\/7tTxS4uZ3jWNmytNzY\/E8Ox9mb4MbwG\/tIhVSkCEMMOLrZcQRI9Ce15j+5ADABA7IfrkeDc8p\/9z4diN5jnMiKMu2TeebXjT8mRgVcsHPqV16yj0Z3j2zdNp9OEBP8DweESB4fFMq9XCEIZLAxvfLsSZID5Gw5seC2RqpoO4mCUvsztrxGOH+a6G5y54U4r34C8tzJXI7FrXn72xZfvMbuLv4fUBJ\/R6vVarJcLwuELB9zHcgiEMlwzVNL5d0JMhhOG1Wq1er+ezeU\/c8EBMwPCAL5jhxdZLCKKnT3te41AQEB+yLGMIw6VkOBweHBy0Wq1A50OIPjkY3qPDoc8zoX\/sO4Hh8QYMj0f6+D6GQwaDQbFYrNfrSX\/BCWKhXq8Xi8WB788m1FBfTsDwHh9ub\/HNW\/AMw+sBTuh2u81mE4bHFzA87hgMBv1+P5\/PDwaDpL\/gBLGgKAoZ386\/5IUwvGaz2e12fTbvMLylwfbByYz\/wxYLMDzuYIYXUx8hiIMe3p7kDUVRyBCGSXsIiBFRFLvdrhLne3UwPJAYMDzugOHxSA+GxxuKouAfQC89oih2Oh0YHlhOmOF1ASd0Op1GowEp54sunq3zRh8fxzwC5vDUtdFodDodn807DA9ECQyPO2B4PNKF4fFGH69OPgJgeGCZgeFxBzO8pAMBAWBZi+05MIiYHh6sPwJCPHUNamwwPJAYzPA6gBPa7bYkSTA8vuig55U3urTbNWkJATEyhz45SZLa7bbP5h2GB6IEhscdMDwe6cDweKOLB+uPABgeWGZgeNzBDC\/pQEAA4OXc0cGD9UfAHIwNhgcSgxleOyBvnzmN2PzkxX6wMvxtsP\/iSdCy54QR2dtngiA8e2ub74R13YDIslyv18MYnmvOgpXhcwO9koGjjB2aG1uInhE\/sDrtkIb3zjlnG1+CleFzg3fPBEF49i5gjHPgy8YTvdZTIXpG\/LDqdNDt+giYg+HV63VZln027zA8ECWhDe\/PNcd\/yhHE8t6uCkL69Tcfa357nfa76pwxIvtzTRCEtT9t852wrhsQZniBt5xrzh5WyThxy5l3xA+sTlgv98yZvyL0nPne29qfAWOcAzRnthA9I35YddpUyoNKw7sVZyv\/GqCMrxtPhJV3vvfmb9U5wyL7Svz86\/R8z43mxByMDYYHEuNBhmf7H2v0n7H56576c82vLfSHk\/v7ybAfNMj4MSJTx\/f392NVn7+whje3nE0dkAXCLWcLa3geOfNdhD\/D0w9IwBjngEJypthCnIfhBe38++Bu5X77Xr+8TAnC2gffe\/O36pxhkX3bTAtCevPb9HzPjeYEDA8sM8zw5IC8XxOE9Ouv1pm94YRcfFa32bztp5Ymbn3PPvfpttPKxlx5b\/2JsamdvfUngntxpnKm51g2JHP31p9MbSLL2+vWXW8\/ZdE4106WvxLD+2pawRT\/+zVBENbeT4XlXm\/T4ifrn1utu7u7ECnznzPnAxosZw4H38wC5oylxbQLo1S\/OaPhmuN8ui23aNYCmqGjUvdZzgwt339hOaC6sFsezBsSb55tVnvv1wecd9F2eifBOseyoSmyqa7j\/Rcv3lqnn9DVrS8YmLaj4m3ahRGXzcrNgZh3rtfbvPjZWzns6xARWPm312m\/brqwVm5EZvh5p9OJ1cqDE8LA7u7uWq2WS8M2TYj1YXggMqI1PFmWe8O\/MgLVhanLuN6yru\/p10sKuW5aL7zGqrLJlxxw2IxdcW1XZfMch+Cebsu9XDZtsR15bz0lpDZMurC9KgiZv4Y999rRiNdWnkyXb49rVr1t\/L4VpeHJUzlzP6DBcuZw8I0juJA503e0+tRj4eycWQ8TW\/r8c4SG1263+3rOHESO8uzt1IN54joO6zLZ8eiodN1F26nH2jRnygvpZupORhBSL02K93bFoqzt\/ZcpIZ39oToUYIRMIl595rFQr45TMVQGHZ+FP1nfC9dZ\/kArt8w1PHSGnboF4+bG8Vu56w1BjFbudhTcgeGBZSZyw5Pl\/26mBSH1ak+W9zZSgiBkdtneSBO39k6WB6P7+92Mfqs7GpBrsmVlsu7Ktix7Gt72qmC9Yd7NCPruvW1hbyNl2XBXlxyiO4YukEqYdGF7VRAyOwOv2hluxnawmxEEVqzFWWbV27yUlLLy72gNz5wzjwMaLGcehregOWNuRpeThXoxfnNGS2Fh6qW8+BzKy7nImf33acxxy5k8yGXT0zmaTmI6m+tFkzN5e0UQ7IGk1vdMpdhy9neoH9oD76Qs93WkHKcbE8fbRSuz70Gdc+ZyJyUPdjLC1J3TytStFUnawMdNnJ87qZn1dqlcAOZgbDA8kBjM8FoB0VsxhyW0oWi1etrk\/v5+NGi1Wq0t4\/e89t5exGf9OkBWbrVarZ6Wz6YFYXXLUqSNwej+\/n6i9Vqt1uf130ztIt0D213LOoe1o0+3jIJGg1arNdjJ6PslgaWz2YyQ2vhMptdJEzajdqT0zC6JjBZKYzGi8FFvIbPLlpJSVrdvb0OkzFfOvA9ogJw5HHzKguaM7MhUod73bNohLj\/1TmfzNPN6Ka++3N7eRml4pgsyOaDDnmy5JtLNzEXssdhpMb1h3ugBdbcFz1142YKRs22joNFAlknXK\/OF7VUhk82mmS9sr5BeV7k3nNAtzN6gR2nkTK9OLmvEYqrO9ir5PQ57Ro12ma\/QnNGleimvPkVqeD6tvDecEMXM7OqHfLadOuZs9j1oXFbu4yZOiMnKNwIqXggDu729bTabMxpbSoj1YXggMmI1PMsF3CD16rOtiHer9vWMlT0Mz3KlNlh9R\/fgZgs97a+MdZvf1klcLdKOrX9u6bLwXduhuvB5IyWks9\/JxdujdiTizf8ae9Yb98\/WKPzU217K+v\/GZ3ieBzRAzjwMb0Fzpu\/oQ4\/tufdhzSEuX\/W2lbLy9jaMl3ORM\/vv03yb55ozsmhlq9VqtbZWhcyO9j2b1j15i\/S6tlqtSHL2+VXKpeKr79xLWXkT6lYqgjupr6\/TRiK2dDvVWHzUTr1zNvse1CVn7ndSve\/ZNLtzam1RK9dvrbZWBCHzl9bzcxM3+07KT73td1IuVwlX5mBsMDyQGMzwmgF5vyYIqddfHJa8WxUEYe1Dt9k0WhV6t0buwfTNzEU4drkLdOUvr1Mue\/v0nDYf9F5Ov099z0olf5rCpnOUkfH+M+XpVrPZbHa\/b6aF1Man5qeNlLD2odtUdjJsOrOjdZvNGbWzR2yeY0QRtN5kzouPNyFS5itn3gc0QM4cDv6C58x7135z5lbK6h83NyGyxkXOvM9295w1lZ2MIKxsNZtbK0J68xtJIp3O5pTIcvbldcql4kZKHXK2HSZlHjmzHCgXZTZW1AP69NIt9tV3jrEbGGkzp\/rlp+lQpoLrajvTVv78E1mJLHq21Ww2m1srQmZHoylrNrdWBCGzozRn1U736S7bc1e3cmPhe7\/1dinFP6Io3tzcNBqNxVkfhgciI3LD+\/Q8Jei\/808vU7RVHpGfPfnNOhnet8205XkCY6x1vQzv3Sq95ozJNZxc+PQW79tmmjZoTVMApuawq43pnvR33IgukB6g589ok0V0YWsjxZow79r5Nbyg9Y7F8Ew5m3FAA+TM\/cqzqDnzawuB6x2H4S1UzuzX1nergiVul5w1lVw2Law8f54S0pvfu02qeFsr+nRUOet+WHP4vpUV6m14jYCQA77vsOQtsfJOo\/HRVZkbjUajsU8Mz\/jbkbX3+t7oqlbe\/E5XnHLjfVqqJUrzHCcr\/\/1No9FoNIiVv2k03qwI6c1vjc73zTSbzuaURmNW7ewRm+YYfwaut\/uR8ACGB5aZaA1Pv2XU777JfbPelDeNuzpLf4J+Weh+30wLpltFVtjTraaX4b1fEwQhtfHJsg1rrUkEbDENYO09nTDvjw7aRKYU\/S6WyoE+ndI7FmbVzq\/hBa232fCCtWQNlyvPRyNnrJVMvfhoXcoaTpKzt41Go0GadkH47fnHqcLIpcC1vfXeBWnX2WJ6lVp7TyfM+6M5I1OmnJmnU3rVaNkrb+jmtHD9oPi88gSut25419fXwbPGRc7IYnZg6dLU6\/2ZOdMDEtKb3zvm6cyO1mk0GlHljJ4Lv78xVjRF5paz7TApczW8j9TKG8T1qDKTir5dNR1Qs+F1POzUMXa6O7MbG3P00DofTKeFEYAp7o7NynXFM1t5p0EV780KS+KM2vn9nQWtd1jDu76+liQpvvVheCAxmOEF+1nQNt2JdPaHZmmsp6GNCCvi9zeNRsf2YICUlVMaTvebFMVpK\/Y7t0WQyWToQiWXtUfHmii6nMqCvifTcu\/aed8hm5qigPUmc178J8yFx0\/OZhzQADlzb28XNWe+bSFovR9qeM4sUM5si1OZTFo\/rLNyRgIyZpAcGTmMKGfOcVCR9DY8KSDv1wQh9WrfOtNk5XQdIfXio3WpIKy9lyRJkvZfpQQh9ZIsZnZqlEbtlJakb2Zh\/1VKEISVN5ZtBBYatXJrAKlX+5bSCdTKyVRHpFYudszTmR21YxwB99rZIzbNMf0ZtN6uR8KLORhe0PVheCAyIja8dPYnu2trNDraeDdjXUgeE5C+AKPNXXnTaDSU0dRzgcwuLcvd8BrKyLJRZpcO\/\/DGFkFm9360YzTlHW3stj8S\/ffNtHGhaTSUnQzrWJhZO9+GF7DeMRieNWczDqj\/nHncUS9ozvzbQsB6Wwwv2PVH8sgZvZxKkvsBlSRJMudMkiTH2PWy3K+R3ruwLE5nf45zmymqEh3VIWdG7JKk7GSoK0iSJHXEzYyuQWRadc2ZY8TOtiBJHXV8by5ISGd\/3o8Ul3rrhnd1RcZLC8Qfjjkju\/yhtuv1er3e\/+CizH\/U6\/V6ndiZIAi\/\/c9\/6vW+i52qbbo3fTMLbdHFjV\/tO0WgW\/mrfZf9pTfFNi1ZJVZOZ5A9ZT706a69a2eP2DTHvDBgvV2PhBeiKF5dXdXrdZ8\/SBge4InQhqeMnIozX21tq421Dpmma7HHAPpDBPNzAdNcfb6t7IbDRiNFn2YbGxGMFH2KLXPbH1tqmaWMptdwr509YvMcaxRB6t3RxpPJqCuF6VqQXHJmvtrSS6EpGH1avxayhfq0dW02l+7NNO17F+ZAR8p0Qa77o0sts5TR9BqWnKkdMk2OgT1i05zphQHqrYzu7yfD\/tXVVfCscZMzY\/FY7ZApFqV3ziRlZKlPRx1NVS+qnFmPpkWRHUqZTIby1RUZTSMQzoZHrFymK\/WHLsr877u7uztZpb2iqfW\/7+5kJzsd9o29rf3hEIfs5sbrf09HkM7+HOdepwQh9WqPbOlg5bJRdP9DJr0pshmyuJnJ5vqm5V61s0dsmmNZGKze7kfCgxCGF7cRwvBAZDDD83m+gsSp1+uhXAEkCctasB4GkBx3d3eXl5dktItA9IZOTe1Yla2ryWbvHfb06WHPWgjbzFKqqbDe0LSVVyhjVSbTbGPZZOUymXJYdu9Ufm9oqY+sDqeq51E7e8SmObaF\/uvteSTcEEXx8vLy7u7O51kxByOE4YHIgOFxRx2uwCFMF5IOBPgltOEBjghheHEbIQwPRAYMjzvqMDwOYboQ7BkSSI7b29uLiwvyLSRYVkRRvLi4uL299XlWwPAATzDDi\/HiBiLlDq7AIUwXkg4E+IWl7BosLyEML24jhOGByIDhcccdDI9DmC4k+EAKBOLm5ub8\/Jz0wYBlRRTF8\/Pzm5sbn2cFDA\/wBAyPO+5geBxyC8PjDRjeYwCGB5YZZnhxXt1AlNzCFTiE6UKiLx2BAFxfX5+dnZErNFhWRFE8Ozu7vr72eVbMwQhheCAyYHjccQvD45AbanhJv3cE\/HJ1dVWr1cgVGiwroijWarWrqyufZwUMD\/AEDI87bvGJH4dc0w6hOJ0ERAkzvHOwvIQwvKB9fjA8kBjM8OLrvQDRcoPnfRxyTQ0v2beOgH8uLy+r1Sq5ooNlRRTFarV6eXnp86yYw1NdGB6IDBged9zgeR+HXNEOoTidBEQJMbxcLletVpP2EBALlUqF5DeQ4cX9VBeGByIDhscdMDweuaKGl+x75cA\/FxcXlUrl169fxWKxBpaRQqHw69evSqVycXHh86yA4QGeYIYX19MpEDXXeKOLQ2B43HFxcVGtViuVyo8fPyqVShUsF+bMxmp4ZwGf6sLwQGTA8LjjGm90ccglfakrwc8GQSDOz8+r1erJyUmhUMjlcsfHx6VSqQL4p1QqHR8f\/\/jx4\/j4+OTkpFqtnp+f+zwr5vDeHgwPRAYMjztgeDwCw+ORWq1WKpUKhcLp6enR0VE+nxcB\/+Tz+aOjo9PT00KhUCqVarWa\/1NChOEBjmCGF9fTKRA1V3hnn0OY4SU3LgQIDHkZ\/+Tk5Pj4+J9\/\/jk8PDw8PPwFeIYk8Z9\/\/iEdeJVK5ezszP8pEcLwgj7VheGByIDhcccV3ujikIuLi0qlAsPjjlqtVqlUTk9Pi8XiMVgWisXi6elppVKp1WqBzgdRFCsxf5kBwwORAcPjDhgejzDDS25oCBASInnlcrlUKpVKpVPAMySJ5XKZ6F3QkwGGB3iCGV5cT6dA1FzijS4OOT8\/L5fLpLkHPJLUJ58gJsKdBqIolsvl8zi\/zIDhgciA4XEHDI9Hzs\/PK5VKLpcjPQcAAO5gP2EYHuADGB53XOKdfQ45Ozsrl8u\/fv0qFArJdl0AAMJBRkgul8tnvj\/OgOGBJGGGF9PrRyByLvDOPoecnZ2Rd7kwfC4APFKhIyQH+vw2xHt7MDwQGTA87oDhcUq1Wj09PcXwuQDwhXmE5NPT02q16v9XD8MDSQLD444LfJXJJ7VarVwuF4vFUqmE4XMB4AUyQnKpVCoWi+VyuRbkC1wRhgcShBleTC+Yg8g5p19lxuciICaq1Wq5XCb\/COv4+PgIALDwHB8fFwqFk5OTcrlcrVYD\/eTF4N\/ewvBAZMDwuOMc427wDJE8NqzaCQBggWGj6BG9C\/p7h+GBJIHhcQcMbwlI8o1xAEBwwv3SYXggSZjhxfFqOYiDs7OzUqmUy+XIPSUAAIAFpFwu53K5Uql0FuTbWxgeiAwYHnecYWQ1AABYeMKNnwfDA5EBw+MOYngYWQ0AABaWCh0\/D4YHEoMZXuSfDYKYqNVq5XK5UChgZDUAAFg0zOPnFQqFQAOswPBAlMDweKRSqZycnBwdHZ2enh5hZDUAAFgYyPh5pHE+OTmpVCr+23YRhgciBIbHIzU6du7R0dHh4eEvAAAAC8Ph4eHR0VG4EZJheCAymOFFNxAEmAfkWUCxWCQD5\/4fAACABYAMkkz+e02lUgnUsMPwQJTA8PilirFzAQBgkXj4CMkwPBAZMDzeSfqLMQAAANOEa89heCBKiOFh+FwAAAAgQcgIyTA8EBnE8A4PDzF8LgAAAJAUhULh8PAQhgciYzKZaJp2fX2N4XMBAACARKhUKj9+\/Li5uRkOhzA8EA2TyWQ0GimKQv7VKYbPBQAAAOYGGyH59PR0MBiMRiMYHoiMyWQyHA77\/b4kScViEcPnAgAAAPMhn88Xi0VJkvr9foQdePcwPEAYj8fD4VBRlF6v1+l0Op1OGwAAAABxQi64vV5PUZThcDgejyO8ssPwgA55XKtpmgoAAACAeaFpWoQPZxkwPGAwAQAAAEASRH5Nh+EBAAAAACwbMDwAAAAAgGUDhgcAAAAAsGzA8AAAAAAAlg0YHgAAAADAsgHDAwAAAABYNmB4AAAAAADLBgwPAAAAAGDZgOEBAAAAACwb\/w9OSnBsqVj9wwAAAABJRU5ErkJggg==\" \/><\/p>\n<p>Here is the modified code:<\/p>\n<pre><code>\/*\r\n\u00a0 Bootstrap - File Input\r\n\u00a0 ======================\r\n\r\n\u00a0 This is meant to convert all file input tags into a set of elements that displays consistently in all browsers.\r\n\r\n\u00a0 Converts all\r\n\u00a0 &lt;input type=\"file\"&gt;\r\n\u00a0 into Bootstrap buttons\r\n\u00a0 &lt;a&gt;Browse&lt;\/a&gt;\r\n\r\n\u00a0 Sven Hasselbach, 26.03.2014:\r\n\u00a0 Added a fix to prevent multiple wrapping \r\n\r\n*\/\r\n(function($) {\r\n\r\n$.fn.bootstrapFileInput = function() {\r\n\r\n\u00a0 this.each(function(i,elem){\r\n\r\n\u00a0\u00a0\u00a0 var $elem = $(elem);\r\n\r\n\u00a0\u00a0\u00a0 \/\/ Maybe some fields don't need to be standardized.\r\n\u00a0\u00a0\u00a0 if (typeof $elem.attr('data-bfi-disabled') != 'undefined') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 return;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 \/\/ --- Fix to prevent multiple wrapping \r\n\u00a0\u00a0 \u00a0\/\/ Sven Hasselbach, 26.03.2014\r\n\r\n\u00a0\u00a0\u00a0 \/\/ check for an existing 'wrapped' attribute'\r\n\u00a0\u00a0\u00a0 if(!!$elem.attr('wrapped'))\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return;\r\n\r\n\u00a0\u00a0\u00a0 \/\/ add the 'wrapped' attribute\r\n\u00a0\u00a0\u00a0 $elem.attr('wrapped', 'true');\r\n    \/\/ --- End of Fix\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 \/\/ Set the word to be displayed on the button\r\n\u00a0\u00a0\u00a0 var buttonWord = 'Browse';\r\n\r\n\u00a0\u00a0\u00a0 if (typeof $elem.attr('title') != 'undefined') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 buttonWord = $elem.attr('title');\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 var className = '';\r\n\r\n\u00a0\u00a0\u00a0 if (!!$elem.attr('class')) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 className = ' ' + $elem.attr('class');\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 \/\/ Now we're going to wrap that input field with a Bootstrap button.\r\n\u00a0\u00a0\u00a0 \/\/ The input will actually still be there, it will just be float above and transparent (done with the CSS).\r\n\u00a0\u00a0\u00a0 $elem.wrap('&lt;a&gt;&lt;\/a&gt;').parent().prepend($('&lt;span&gt;&lt;\/span&gt;').html(buttonWord));\r\n\u00a0 })\r\n\r\n\u00a0 \/\/ After we have found all of the file inputs let's apply a listener for tracking the mouse movement.\r\n\u00a0 \/\/ This is important because the in order to give the illusion that this is a button in FF we actually need to move the button from the file input under the cursor. Ugh.\r\n\u00a0 .promise().done( function(){\r\n\r\n\u00a0\u00a0\u00a0 \/\/ As the cursor moves over our new Bootstrap button we need to adjust the position of the invisible file input Browse button to be under the cursor.\r\n\u00a0\u00a0\u00a0 \/\/ This gives us the pointer cursor that FF denies us\r\n\u00a0\u00a0\u00a0 $('.file-input-wrapper').mousemove(function(cursor) {\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 var input, wrapper,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 wrapperX, wrapperY,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 inputWidth, inputHeight,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cursorX, cursorY;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ This wrapper element (the button surround this file input)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 wrapper = $(this);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ The invisible file input element\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 input = wrapper.find(\"input\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ The left-most position of the wrapper\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 wrapperX = wrapper.offset().left;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ The top-most position of the wrapper\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 wrapperY = wrapper.offset().top;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ The with of the browsers input field\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 inputWidth= input.width();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ The height of the browsers input field\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 inputHeight= input.height();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/The position of the cursor in the wrapper\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 cursorX = cursor.pageX;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 cursorY = cursor.pageY;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/The positions we are to move the invisible file input\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ The 20 at the end is an arbitrary number of pixels that we can shift the input such that cursor is not pointing at the end of the Browse button but somewhere nearer the middle\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 moveInputX = cursorX - wrapperX - inputWidth + 20;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Slides the invisible input Browse button to be positioned middle under the cursor\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 moveInputY = cursorY- wrapperY - (inputHeight\/2);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Apply the positioning styles to actually move the invisible file input\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 input.css({\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 left:moveInputX,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 top:moveInputY\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 });\r\n\u00a0\u00a0\u00a0 });\r\n\r\n\u00a0\u00a0\u00a0 $('body').on('change', '.file-input-wrapper input[type=file]', function(){\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 var fileName;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 fileName = $(this).val();\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Remove any previous file names\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 $(this).parent().next('.file-input-name').remove();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if (!!$(this).prop('files') &amp;&amp; $(this).prop('files').length &gt; 1) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fileName = $(this)[0].files.length+' files';\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fileName = fileName.substring(fileName.lastIndexOf('\\\\') + 1, fileName.length);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Don't try to show the name if there is none\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if (!fileName) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 var selectedFileNamePlacement = $(this).data('filename-placement');\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if (selectedFileNamePlacement === 'inside') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Print the fileName inside\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $(this).siblings('span').html(fileName);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $(this).attr('title', fileName);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Print the fileName aside (right after the the button)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $(this).parent().after('&lt;span&gt;'+fileName+'&lt;\/span&gt;');\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 });\r\n\r\n\u00a0 });\r\n\r\n};\r\n\r\n\/\/ Add the styles before the first stylesheet\r\n\/\/ This ensures they can be easily overridden with developer styles\r\nvar cssHtml = '&lt;style&gt;'+\r\n\u00a0 '.file-input-wrapper { overflow: hidden; position: relative; cursor: pointer; z-index: 1; }'+\r\n\u00a0 '.file-input-wrapper input[type=file], .file-input-wrapper input[type=file]:focus, .file-input-wrapper input[type=file]:hover { position: absolute; top: 0; left: 0; cursor: pointer; opacity: 0; filter: alpha(opacity=0); z-index: 99; outline: 0; }'+\r\n\u00a0 '.file-input-name { margin-left: 8px; }'+\r\n\u00a0 '&lt;\/style&gt;';\r\n$('link[rel=stylesheet]').eq(0).before(cssHtml);\r\n\r\n})(jQuery);\r\n<\/code><\/pre>\n<p>Thanks to <a title=\"gregpike.net\" href=\"http:\/\/gregpike.net\" target=\"_blank\">Gregory Pike<\/a> for his good work. The jQuery plugin is distributed under <a title=\"apache.org - License\" href=\"http:\/\/www.apache.org\/licenses\/LICENSE-2.0\" target=\"_blank\">Apache License<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When using the default file upload control in a Bootstrap application, the default file upload button does not fit anymore to the design: To fix this issue, you can use a small jQuery plugin named Twitter Bootstrap File Input. When &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=1437\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,81,74],"tags":[33,47,49,77,96,4,43,12,3],"class_list":["post-1437","post","type-post","status-publish","format-standard","hentry","category-javascript","category-web","category-xpages","tag-8-5-3","tag-9-0","tag-bootstrap","tag-html","tag-html5","tag-js","tag-jquery","tag-web","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1437"}],"version-history":[{"count":2,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1437\/revisions"}],"predecessor-version":[{"id":1439,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1437\/revisions\/1439"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}