Is it possible to replace the Uploadify button (which is a graphic containing up/over/down states) with a simple CSS-styled button?
I was able to get away with something massively more simple.
xhtml:
<div id="uploadify">
Upload Pictures
<div id="uploadify" type="button" />
</div>
css:
#uploadify object {
position:absolute;
left:0; right:0;
width:100%
}
javascript:
$("#uploadify>div").uploadify({
'hideButton' : true
, 'wmode' : 'transparent'
, 'uploader' : '/static/uploadify/uploadify.swf'
, 'script' : '/static/uploadify.php'
, 'folder' : '/_uploads'
, 'multi' : true
})
// If you're using jQuery UI.
$("#uploadify").button();
Probably a little easier, now that we have hideButton: true
, not sure if @Herb knew about it.
UPDATE I wrote this answer in July of 2010. It's now March of 2013. HTML5 supports multiple file-uploads. Don't use uploadify at all; I don't.
A really simple way is to open the file with Flash
You can then change the background colour of the symbol UploadBtn
Save and publish the swf.
reading your answers helped me to solve this one this way
<input>
into a <div class=upload-wrap>
HTML:
<div class="upload-wrap">
<input id="file_upload" type="file" name="file_upload" />
</div>
CSS:
.upload-wrap{
background:#ff0;
width:133px;
height:36px;
}
.upload-wrap:hover{
background:#f00;
}
JS
$('#file_upload').uploadify({
'uploader' : 'uploadify/uploadify.swf',
'script' : 'uploadify/uploadify.php',
'folder' : 'files/images',
'hideButton' : true,
'wmode' : 'transparent',
'buttonText' : 'Upload something'
'width' : 133,
'height' : 36
});
This way you're able to style your button, an keep the buttonText option available. I also had to mess a little bit with the .fla file to get the color and font for my button
I've been able to come up with a working solution to this. Here's the basic outline:
buttonImg: " "
wmode:"transparent"
button
or a
tag behind the flash objectThe flash object will shield the button underneath it from mouseover etc. events; so to get hover effects, you'll need to take a couple of additional steps:
.hover()
events on the wrapper div and apply styles to the buttonPutting it all together:
HTML
<div class="UploadifyButtonWrapper">
<a>Upload Files</a>
<div class="UploadifyObjectWrapper">
<input type="file" id="Uploadify" name="Uploadify" />
</div>
</div>
CSS
div.UploadifyButtonWrapper{
position:relative;
}
/* fake button */
div.UploadifyButtonWrapper a {
position:absolute; /* relative to UploadifyButtonWrapper */
top:0;
left:0;
z-index:0;
display:block;
float:left;
border:1px solid gray;
padding:10px;
background:silver;
color:black;
}
/* pass hover effects to button */
div.UploadifyButtonWrapper a.Hover {
background:orange;
color:white;
}
/* position flash button above css button */
div.UploadifyObjectWrapper {
position:relative;
z-index:10;
}
Javascript:
$("input.Uploadify", self).uploadify({
...
buttonImg: " ",
wmode: "transparent",
...
});
var $buttonWrapper = $(".UploadifyButtonWrapper", self);
var $objectWrapper = $(".UploadifyObjectWrapper", self);
var $object = $("object", self);
var $fakeButton = $("a", self);
var width = $fakeButton.outerWidth();
var height = $fakeButton.outerHeight();
$object.attr("width", width).attr("height", height);
$buttonWrapper.css("width", width + "px").css("height", height + "px")
$objectWrapper.hover(function() {
$("a", this).addClass("Hover");
}, function() {
$("a", this).removeClass("Hover");
});
100% working example. Tested in Firefox, Chrome, Opera and IE6!
HTML:
<div id="uploadify-wrapper"><div id="uploadify"></div></div>
<span id="btn">Select files to upload</span>
<div id="uploadify-queue"></div>
CSS:
#uploadify-wrapper {position:absolute; overflow:hidden}
JavaScript:
$('#uploadify').uploadify({width:1000, height:1000, hideButton:true, wmode:'transparent', queueID:'uploadify-queue', ...);
$('#uploadify-wrapper').width($('#btn').outerWidth()).height($('#btn').outerHeight());
Why not just put a Wrapper around it like this:
<div class = "uploadWrapper"><input id="file_upload" name="file_upload" type="file" /></div>
Style it like this:
.uploadWrapper object {background-color: red;}
.uploadWrapper object:hover {background-color: blue;}
And use the following script:
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
'hideButton': true,
'wmode' : 'transparent',
'uploader' : '/uploadify/uploadify.swf',
'script' : '/uploadify/uploadify.php',
'cancelImg' : '/uploadify/cancel.png',
'folder' : '/uploads',
'auto' : true
});
});
</script>
Works for me ;) ... and of course you can just use background-images instead of the colors.