Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UPLOAD EN AJAX + FLASH (FANCY UPLOAD)


Information sur la source

Catégorie :Formulaire Classé sous : ajax, upload, envoi, multiple, formulaire Niveau : Initié Date de création : 20/11/2007 Date de mise à jour : 21/11/2007 14:07:07 Vu / téléchargé: 25 040 / 1 427

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (72)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Superbe script réalisé par http://digitarald.de/project/fancyupload/ ,
Il permet l'envoi de fichiers multiples mais réellement multiples puisqu'il n'impose pas l'abondance d'input avec bouton parcourir, un seul suffit.
En plus une barre d'avancement animée est intégrée !

Je suis sur que cette source intéressera du monde tout autan que moi !

Le problème étant je le trouve assez complexe et je n'arrive pas à l'installer !

Voila si vous êtes intéressés par ce script je serrai ravi d'essayer de comprendre avec vous comment l'installer !
 

Source

  • /*
  • ------------------------------------------------------------------------------------------------------------------------------------------------------------Script: Swiff.Uploader.js
  • Contains <Swiff.Uploader>
  • Author:
  • Valerio Proietti, <http://mad4milk.net>,
  • Harald Kirschner, <http://digitarald.de>
  • */
  • /*
  • Class: Swiff.Uploader
  • creates an uploader instance. Requires an existing Swiff.Uploader.swf instance.
  • Arguments:
  • callBacks - an object, containing key/value pairs, representing the possible callbacks. See below.
  • onLoaded - Callback when the swf is initialized
  • options - types, multiple, queued, swf, url, container
  • callBacks:
  • onOpen - a function to fire when the user opens a file.
  • onProgress - a function to fire when the file is uploading. passes the name, the current uploaded size and the full size.
  • onSelect - a function to fire when the user selects a file.
  • onComplete - a function to fire when the file finishes uploading
  • onError - a function to fire when there is an error.
  • onCancel - a function to fire when the user cancels the file uploading.
  • */
  • Swiff.Uploader = new Class({
  • options: {
  • types: false,
  • multiple: true,
  • queued: true,
  • swf: null,
  • url: null,
  • container: null
  • },
  • callBacks: {
  • onOpen: Class.empty,
  • onProgress: Class.empty,
  • onSelect: Class.empty,
  • onComplete: Class.empty,
  • onError: Class.empty,
  • onCancel: Class.empty
  • },
  • initialize: function(callBacks, onLoaded, options){
  • if (Swiff.getVersion() < 8) return false;
  • this.setOptions(options);
  • this.onLoaded = onLoaded;
  • var calls = $extend($merge(this.callBacks), callBacks || {});
  • for (p in calls) calls[p] = calls[p].bind(this);
  • this.instance = Swiff.nextInstance();
  • Swiff.callBacks[this.instance] = calls;
  • this.object = Swiff.Uploader.register(this.loaded.bind(this), this.options.swf, this.options.container);
  • return this;
  • },
  • loaded: function(){
  • Swiff.remote(this.object, 'create', this.instance, this.options.types, this.options.multiple, this.options.queued, this.options.url);
  • this.onLoaded.delay(10);
  • },
  • browse: function(){
  • Swiff.remote(this.object, 'browse', this.instance);
  • },
  • send: function(url){
  • Swiff.remote(this.object, 'upload', this.instance, url);
  • },
  • remove: function(name, size){
  • Swiff.remote(this.object, 'remove', this.instance, name, size);
  • },
  • fileIndex: function(name, size){
  • return Swiff.remote(this.object, 'fileIndex', this.instance, name, size);
  • },
  • fileList: function(){
  • return Swiff.remote(this.object, 'filelist', this.instance);
  • }
  • });
  • Swiff.Uploader.implement(new Options);
  • Swiff.Uploader.extend = $extend;
  • Swiff.Uploader.extend({
  • swf: 'Swiff.Uploader.swf',
  • callBacks: [],
  • register: function(callBack, url, container){
  • if (!Swiff.Uploader.object || !Swiff.Uploader.loaded) {
  • Swiff.Uploader.callBacks.push(callBack);
  • if (!Swiff.Uploader.object) {
  • Swiff.Uploader.object = new Swiff(url || Swiff.Uploader.swf, {callBacks: {'onLoad': Swiff.Uploader.onLoad}});
  • (container || document.body).appendChild(Swiff.Uploader.object);
  • }
  • }
  • else callBack.delay(10);
  • return Swiff.Uploader.object;
  • },
  • onLoad: function(){
  • Swiff.Uploader.loaded = true;
  • Swiff.Uploader.callBacks.each(function(fn){
  • fn.delay(10);
  • });
  • Swiff.Uploader.callBacks.length = 0;
  • }
  • });
  • /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Script: Swiff.Base.js
  • Contains <Swiff>, <Swiff.getVersion>, <Swiff.remote>
  • Author:
  • Valerio Proietti, <http://mad4milk.net>
  • enhanced by Harald Kirschner <http://digitarald.de>
  • Credits:
  • Flash detection 'borrowed' from SWFObject.
  • */
  • /*
  • Function: Swiff
  • creates a flash object with supplied parameters.
  • Arguments:
  • source - the swf path.
  • properties - an object with key/value pairs. all options are optional. see below.
  • where - the $(element) to inject the flash object.
  • Properties:
  • width - int, the width of the flash object. defaults to 0.
  • height - int, the height of the flash object. defaults to 0.
  • id - string, the id of the flash object. defaults to 'Swiff-Object-num_of_object_inserted'.
  • wmode - string, transparent or opaque.
  • bgcolor - string, hex value for the movie background color.
  • vars - an object of variables (functions, anything) you want to pass to your flash movie
  • Returns:
  • the object element, to be injected somewhere.
  • Important: the $ function on the OBJECT element wont extend it, will just target the movie by its id/reference. So its not possible to use the <Element> methods on it.
  • This is why it has to be injected using $('myFlashContainer').adopt(myObj) instead of $(myObj).injectInside('myFlashContainer');
  • Example:
  • (start code)
  • var obj = new Swiff('myMovie.swf', {
  • width: 500,
  • height: 400,
  • id: 'myBeautifulMovie',
  • wmode: 'opaque',
  • bgcolor: '#ff3300',
  • vars: {
  • onLoad: myOnloadFunc,
  • myVariable: myJsVar,
  • myVariableString: 'hello'
  • }
  • });
  • $('myElement').adopt(obj);
  • (end)
  • */
  • var Swiff = function(source, props){
  • if (!Swiff.fixed) Swiff.fix();
  • var instance = Swiff.nextInstance();
  • Swiff.vars[instance] = {};
  • props = $merge({
  • width: 1,
  • height: 1,
  • id: instance,
  • wmode: 'transparent',
  • bgcolor: '#ffffff',
  • allowScriptAccess: 'sameDomain',
  • callBacks: {'onLoad': Class.empty},
  • params: false
  • }, props || {});
  • var append = [];
  • for (var p in props.callBacks){
  • Swiff.vars[instance][p] = props.callBacks[p];
  • append.push(p + '=Swiff.vars.' + instance + '.' + p);
  • }
  • if (props.params) append.push(Object.toQueryString(props.params));
  • var swf = source + '?' + append.join('&');
  • return new Element('div').setHTML(
  • '<object width="', props.width, '" height="', props.height, '" id="', props.id, '" type="application/x-shockwave-flash" data="', swf, '">'
  • ,'<param name="allowScriptAccess" value="', props.allowScriptAccess, '" />'
  • ,'<param name="movie" value="', swf, '" />'
  • ,'<param name="bgcolor" value="', props.bgcolor, '" />'
  • ,'<param name="scale" value="noscale" />'
  • ,'<param name="salign" value="lt" />'
  • ,'<param name="wmode" value="', props.wmode, '" />'
  • ,'</object>').firstChild;
  • };
  • Swiff.extend = $extend;
  • Swiff.extend({
  • count: 0,
  • callBacks: {},
  • vars: {},
  • nextInstance: function(){
  • return 'Swiff' + Swiff.count++;
  • },
  • //from swfObject, fixes bugs in ie+fp9
  • fix: function(){
  • Swiff.fixed = true;
  • window.addEvent('beforeunload', function(){
  • __flash_unloadHandler = __flash_savedUnloadHandler = Class.empty;
  • });
  • if (!window.ie) return;
  • window.addEvent('unload', function(){
  • $each(document.getElementsByTagName("object"), function(swf){
  • swf.style.display = 'none';
  • for (var p in swf){
  • if (typeof swf[p] == 'function') swf[p] = Class.empty;
  • }
  • });
  • });
  • },
  • /*
  • Function: Swiff.getVersion
  • gets the major version of the flash player installed.
  • Returns:
  • a number representing the flash version installed, or 0 if no player is installed.
  • */
  • getVersion: function(){
  • if (!Swiff.pluginVersion) {
  • var x;
  • if(navigator.plugins && navigator.mimeTypes.length){
  • x = navigator.plugins["Shockwave Flash"];
  • if(x && x.description) x = x.description;
  • } else if (window.ie){
  • try {
  • x = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
  • x = x.GetVariable("$version");
  • } catch(e){}
  • }
  • Swiff.pluginVersion = ($type(x) == 'string') ? parseInt(x.match(/\d+/)[0]) : 0;
  • }
  • return Swiff.pluginVersion;
  • },
  • /*
  • Function: Swiff.remote
  • Calls an ActionScript function from javascript. Requires ExternalInterface.
  • Returns:
  • Whatever the ActionScript Returns
  • */
  • remote: function(obj, fn){
  • var rs = obj.CallFunction("<invoke name=\"" + fn + "\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments, 2) + "</invoke>");
  • return eval(rs);
  • }
  • });
  • /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Script: FancyUpload.js
  • * FancyUpload - Flash meets Ajax for beauty uploads
  • *
  • * Based on Swiff.Base and Swiff.Uploader.
  • *
  • * Its intended that you edit this class to add your
  • * own queue layout/text/effects. This is NO include
  • * and forget class. If you want custom effects or
  • * more output, use Swiff.Uploader as interface
  • * for your new class or change this class.
  • *
  • * USAGE:
  • * var inputElement = $E('input[type="file"]');
  • * new FancyUpload(inputElement, {
  • * swf: '../swf/Swiff.Uploader.swf'
  • * // more options
  • * })
  • *
  • * The target element has to be in an form, the upload starts onsubmit
  • * by default.
  • *
  • * OPTIONS:
  • *
  • * url: Upload target URL, default is form-action if given, otherwise current page
  • * swf: Path & filename of the swf file, default: Swiff.Uploader.swf
  • * multiple: Multiple files selection, default: true
  • * queued: Queued upload, default: true
  • * types: Object with (description: extension) pairs, default: Images (*.jpg; *.jpeg; *.gif; *.png)
  • * limitSize: Maximum size for one added file, bigger files are ignored, default: false
  • * limitFiles: Maximum files in the queue, default: false
  • * createReplacement: Function that creates the replacement for the input-file, default: false, so a button with "Browse Files" is created
  • * instantStart: Upload starts instantly after selecting a file, default: false
  • * allowDuplicates: Allow duplicate filenames in the queue, default: true
  • * container: Container element for the swf, default: document.body, used only for the first FancyUpload instance, see QUIRKS
  • * optionFxDuration: Fx duration for highlight, default: 250
  • * queueList: The Element or ID for the queue list
  • * onComplete: Event fired when one file is completed
  • * onAllComplete: Event fired when all files uploaded
  • *
  • * NOTE:
  • *
  • * Flash FileReference is stupid, the request will have no cookies
  • * or additional post data. Only the file is send in $_FILES['Filedata'],
  • * with a wrong content-type (application/octet-stream).
  • * When u have sessions, append them as get-data to the the url.
  • *
  • *
  • * @version 1.0rc1
  • *
  • * @license MIT License
  • *
  • * @author Harald Kirschner <mail [at] digitarald [dot] de>
  • * @copyright Authors
  • */
  • var FancyUpload = new Class({
  • options: {
  • url: false,
  • swf: 'Swiff.Uploader.swf',
  • multiple: true,
  • queued: true,
  • types: {'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'},
  • limitSize: false,
  • limitFiles: false,
  • createReplacement: null,
  • instantStart: false,
  • allowDuplicates: false,
  • optionFxDuration: 250,
  • container: null,
  • queueList: 'photoupload-queue',
  • onComplete: Class.empty,
  • onError: Class.empty,
  • onCancel: Class.empty,
  • onAllComplete: Class.empty
  • },
  • initialize: function(el, options){
  • this.element = $(el);
  • this.setOptions(options);
  • this.options.url = this.options.url || this.element.form.action || location.href;
  • this.fileList = [];
  • this.uploader = new Swiff.Uploader({
  • onOpen: this.onOpen.bind(this),
  • onProgress: this.onProgress.bind(this),
  • onComplete: this.onComplete.bind(this),
  • onError: this.onError.bind(this),
  • onSelect: this.onSelect.bind(this)
  • }, this.initializeFlash.bind(this), {
  • swf: this.options.swf,
  • types: this.options.types,
  • multiple: this.options.multiple,
  • queued: this.options.queued,
  • container: this.options.container
  • });
  • },
  • initializeFlash: function() {
  • this.queue = $(this.options.queueList);
  • $(this.element.form).addEvent('submit', this.upload.bindWithEvent(this));
  • if (this.options.createReplacement) this.options.createReplacement(this.element);
  • else {
  • new Element('input', {
  • type: 'button',
  • value: 'Browse Files',
  • events: {
  • click: this.browse.bind(this)
  • }
  • }).injectBefore(this.element);
  • this.element.remove();
  • }
  • },
  • browse: function() {
  • this.uploader.browse();
  • },
  • upload: function(e) {
  • if (e) e.stop();
  • this.uploader.send(this.options.url);
  • },
  • onSelect: function(name, size) {
  • if (this.uploadTimer) this.uploadTimer = $clear(this.uploadTimer);
  • if ((this.options.limitSize && (size > this.options.limitSize))
  • || (this.options.limitFiles && (this.fileList.length >= this.options.limitFiles))
  • || (!this.options.allowDuplicates && this.findFile(name, size) != -1)) return false;
  • this.addFile(name, size);
  • if (this.options.instantStart) this.uploadTimer = this.upload.delay(250, this);
  • return true;
  • },
  • onOpen: function(name, size) {
  • var index = this.findFile(name, size);
  • this.fileList[index].status = 1;
  • if (this.fileList[index].fx) return;
  • this.fileList[index].fx = new Element('div', {'class': 'queue-subloader'}).injectInside(
  • new Element('div', {'class': 'queue-loader'}).setHTML('Uploading').injectInside(this.fileList[index].element)
  • ).effect('width', {
  • duration: 200,
  • wait: false,
  • unit: '%',
  • transition: Fx.Transitions.linear
  • }).set(0);
  • },
  • onProgress: function(name, bytes, total, percentage) {
  • this.uploadStatus(name, total, percentage);
  • },
  • onComplete: function(name, size) {
  • var index = this.uploadStatus(name, size, 100);
  • this.fileList[index].fx.element.setHTML('Completed');
  • this.fileList[index].status = 2;
  • this.highlight(index, 'e1ff80');
  • this.checkComplete(name, size, 'onComplete');
  • },
  • /**
  • * Error codes are just examples, customize them according to your server-errorhandling
  • *
  • */
  • onError: function(name, size, error) {
  • var msg = "Upload failed (" + error + ")";
  • switch(error.toInt()) {
  • case 500: msg = "Internal server error, please contact Administrator!"; break;
  • case 400: msg = "Upload failed, please check your filesize!"; break;
  • case 409: msg = "Could not process image, please choose another!"; break;
  • case 415: msg = "Unsupported media type, please upload GIF, PNG, TIFF or JPEG!"; break;
  • case 412: msg = "Invalid target, please reload page and try again!"; break;
  • case 417: msg = "Photo too small, please keep our photo manifest in mind!"; break;
  • }
  • var index = this.uploadStatus(name, size, 100);
  • this.fileList[index].fx.element.setStyle('background-color', '#ffd780').setHTML(msg);
  • this.fileList[index].status = 2;
  • this.highlight(index, 'ffd780');
  • this.checkComplete(name, size, 'onError');
  • },
  • checkComplete: function(name, size, fire) {
  • this.fireEvent(fire, [name, size]);
  • if (this.nextFile() == -1) this.fireEvent('onAllComplete');
  • },
  • addFile: function(name, size) {
  • if (!this.options.multiple && this.fileList.length) this.remove(this.fileList[0].name, this.fileList[0].size);
  • this.fileList.push({
  • name: name,
  • size: size,
  • status: 0,
  • percentage: 0,
  • element: new Element('li').setHTML('<span class="queue-file">'+ name +'</span><span class="queue-size" title="'+ size +' byte">~'+ Math.ceil(size / 1000) +' kb</span>').injectInside(this.queue)
  • });
  • new Element('a', {
  • href: 'javascript:void(0)',
  • 'class': 'input-delete',
  • title: 'Remove from queue',
  • events: {
  • click: this.cancelFile.bindWithEvent(this, [name, size])
  • }
  • }).injectBefore(this.fileList.getLast().element.getFirst());
  • this.highlight(this.fileList.length - 1, 'e1ff80');
  • },
  • uploadStatus: function(name, size, percentage) {
  • var index = this.findFile(name, size);
  • this.fileList[index].fx.start(percentage).element.setHTML(percentage +'%');
  • this.fileList[index].percentage = percentage;
  • return index;
  • },
  • uploadOverview: function() {
  • var l = this.fileList.length, i = -1, percentage = 0;
  • while (++i < l) percentage += this.fileList[i].percentage;
  • return Math.ceil(percentage / l);
  • },
  • highlight: function(index, color) {
  • return this.fileList[index].element.effect('background-color', {duration: this.options.optionFxDuration}).start(color, 'fff');
  • },
  • cancelFile: function(e, name, size) {
  • e.stop();
  • this.remove(name, size);
  • },
  • remove: function(name, size, index) {
  • if (name) index = this.findFile(name, size);
  • if (index == -1) return;
  • if (this.fileList[index].status < 2) {
  • this.uploader.remove(name, size);
  • this.checkComplete(name, size, 'onCancel');
  • }
  • this.fileList[index].element.effect('opacity', {duration: this.options.optionFxDuration}).start(1, 0).chain(Element.remove.pass([this.fileList[index].element], Element));
  • this.fileList.splice(index, 1);
  • return;
  • },
  • findFile: function(name, size) {
  • var l = this.fileList.length, i = -1;
  • while (++i < l) if (this.fileList[i].name == name && this.fileList[i].size == size) return i;
  • return -1;
  • },
  • nextFile: function() {
  • var l = this.fileList.length, i = -1;
  • while (++i < l) if (this.fileList[i].status != 2) return i;
  • return -1;
  • },
  • clearList: function(complete) {
  • var i = -1;
  • while (++i < this.fileList.length) if (complete || this.fileList[i].status == 2) this.remove(0, 0, 0, i--);
  • }
  • });
  • FancyUpload.implement(new Events, new Options);
/*
------------------------------------------------------------------------------------------------------------------------------------------------------------Script: Swiff.Uploader.js
	Contains <Swiff.Uploader>

Author:
	Valerio Proietti, <http://mad4milk.net>,
	Harald Kirschner, <http://digitarald.de>
*/

/*
Class: Swiff.Uploader
	creates an uploader instance. Requires an existing Swiff.Uploader.swf instance.

Arguments:
	callBacks - an object, containing key/value pairs, representing the possible callbacks. See below.
	onLoaded - Callback when the swf is initialized
	options - types, multiple, queued, swf, url, container

callBacks:
	onOpen - a function to fire when the user opens a file.
	onProgress - a function to fire when the file is uploading. passes the name, the current uploaded size and the full size.
	onSelect - a function to fire when the user selects a file.
	onComplete - a function to fire when the file finishes uploading
	onError - a function to fire when there is an error.
	onCancel - a function to fire when the user cancels the file uploading.
*/

Swiff.Uploader = new Class({

	options: {
		types: false,
		multiple: true,
		queued: true,
		swf: null,
		url: null,
		container: null
	},

	callBacks: {
		onOpen: Class.empty,
		onProgress: Class.empty,
		onSelect: Class.empty,
		onComplete: Class.empty,
		onError: Class.empty,
		onCancel: Class.empty
	},

	initialize: function(callBacks, onLoaded, options){
		if (Swiff.getVersion() < 8) return false;
		this.setOptions(options);
		this.onLoaded = onLoaded;
		var calls = $extend($merge(this.callBacks), callBacks || {});
		for (p in calls) calls[p] = calls[p].bind(this);
		this.instance = Swiff.nextInstance();
		Swiff.callBacks[this.instance] = calls;
		this.object = Swiff.Uploader.register(this.loaded.bind(this), this.options.swf, this.options.container);
		return this;
	},

	loaded: function(){
		Swiff.remote(this.object, 'create', this.instance, this.options.types, this.options.multiple, this.options.queued, this.options.url);
		this.onLoaded.delay(10);
	},

	browse: function(){
		Swiff.remote(this.object, 'browse', this.instance);
	},

	send: function(url){
		Swiff.remote(this.object, 'upload', this.instance, url);
	},

	remove: function(name, size){
		Swiff.remote(this.object, 'remove', this.instance, name, size);
	},

	fileIndex: function(name, size){
		return Swiff.remote(this.object, 'fileIndex', this.instance, name, size);
	},

	fileList: function(){
		return Swiff.remote(this.object, 'filelist', this.instance);
	}

});

Swiff.Uploader.implement(new Options);

Swiff.Uploader.extend = $extend;

Swiff.Uploader.extend({

	swf: 'Swiff.Uploader.swf',

	callBacks: [],

	register: function(callBack, url, container){
		if (!Swiff.Uploader.object || !Swiff.Uploader.loaded) {
			Swiff.Uploader.callBacks.push(callBack);
			if (!Swiff.Uploader.object) {
				Swiff.Uploader.object = new Swiff(url || Swiff.Uploader.swf, {callBacks: {'onLoad': Swiff.Uploader.onLoad}});
				(container || document.body).appendChild(Swiff.Uploader.object);
			}
		}
		else callBack.delay(10);
		return Swiff.Uploader.object;
	},

	onLoad: function(){
		Swiff.Uploader.loaded = true;
		Swiff.Uploader.callBacks.each(function(fn){
			fn.delay(10);
		});
		Swiff.Uploader.callBacks.length = 0;
	}

});

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Script: Swiff.Base.js

	Contains <Swiff>, <Swiff.getVersion>, <Swiff.remote>

Author:
	Valerio Proietti, <http://mad4milk.net>
	enhanced by Harald Kirschner <http://digitarald.de>

Credits:
	Flash detection 'borrowed' from SWFObject.
*/

/*
Function: Swiff
	creates a flash object with supplied parameters.

Arguments:
	source - the swf path.
	properties - an object with key/value pairs. all options are optional. see below.
	where - the $(element) to inject the flash object.

Properties:
	width - int, the width of the flash object. defaults to 0.
	height - int, the height of the flash object. defaults to 0.
	id - string, the id of the flash object. defaults to 'Swiff-Object-num_of_object_inserted'.
	wmode - string, transparent or opaque.
	bgcolor - string, hex value for the movie background color.
	vars - an object of variables (functions, anything) you want to pass to your flash movie

Returns:
	the object element, to be injected somewhere.
	Important: the $ function on the OBJECT element wont extend it, will just target the movie by its id/reference. So its not possible to use the <Element> methods on it.
	This is why it has to be injected using $('myFlashContainer').adopt(myObj) instead of $(myObj).injectInside('myFlashContainer');

Example:
	(start code)
	var obj = new Swiff('myMovie.swf', {
		width: 500,
		height: 400,
		id: 'myBeautifulMovie',
		wmode: 'opaque',
		bgcolor: '#ff3300',
		vars: {
			onLoad: myOnloadFunc,
			myVariable: myJsVar,
			myVariableString: 'hello'
		}
	});
	$('myElement').adopt(obj);
	(end)
*/

var Swiff = function(source, props){
	if (!Swiff.fixed) Swiff.fix();
	var instance = Swiff.nextInstance();
	Swiff.vars[instance] = {};
	props = $merge({
		width: 1,
		height: 1,
		id: instance,
		wmode: 'transparent',
		bgcolor: '#ffffff',
		allowScriptAccess: 'sameDomain',
		callBacks: {'onLoad': Class.empty},
		params: false
	}, props || {});
	var append = [];
	for (var p in props.callBacks){
		Swiff.vars[instance][p] = props.callBacks[p];
		append.push(p + '=Swiff.vars.' + instance + '.' + p);
	}
	if (props.params) append.push(Object.toQueryString(props.params));
	var swf = source + '?' + append.join('&');
	return new Element('div').setHTML(
		'<object width="', props.width, '" height="', props.height, '" id="', props.id, '" type="application/x-shockwave-flash" data="', swf, '">'
			,'<param name="allowScriptAccess" value="', props.allowScriptAccess, '" />'
			,'<param name="movie" value="', swf, '" />'
			,'<param name="bgcolor" value="', props.bgcolor, '" />'
			,'<param name="scale" value="noscale" />'
			,'<param name="salign" value="lt" />'
			,'<param name="wmode" value="', props.wmode, '" />'
		,'</object>').firstChild;
};

Swiff.extend = $extend;

Swiff.extend({

	count: 0,

	callBacks: {},

	vars: {},

	nextInstance: function(){
		return 'Swiff' + Swiff.count++;
	},

	//from swfObject, fixes bugs in ie+fp9
	fix: function(){
		Swiff.fixed = true;
		window.addEvent('beforeunload', function(){
			__flash_unloadHandler = __flash_savedUnloadHandler = Class.empty;
		});
		if (!window.ie) return;
		window.addEvent('unload', function(){
			$each(document.getElementsByTagName("object"), function(swf){
				swf.style.display = 'none';
				for (var p in swf){
					if (typeof swf[p] == 'function') swf[p] = Class.empty;
				}
			});
		});
	},

	/*
	Function: Swiff.getVersion
		gets the major version of the flash player installed.

	Returns:
		a number representing the flash version installed, or 0 if no player is installed.
	*/

	getVersion: function(){
		if (!Swiff.pluginVersion) {
			var x;
			if(navigator.plugins && navigator.mimeTypes.length){
				x = navigator.plugins["Shockwave Flash"];
				if(x && x.description) x = x.description;
			} else if (window.ie){
				try {
					x = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
					x = x.GetVariable("$version");
				} catch(e){}
			}
			Swiff.pluginVersion = ($type(x) == 'string') ? parseInt(x.match(/\d+/)[0]) : 0;
		}
		return Swiff.pluginVersion;
	},

	/*
	Function: Swiff.remote
		Calls an ActionScript function from javascript. Requires ExternalInterface.

	Returns:
		Whatever the ActionScript Returns
	*/

	remote: function(obj, fn){
		var rs = obj.CallFunction("<invoke name=\"" + fn + "\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments, 2) + "</invoke>");
		return eval(rs);
	}

});

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Script: FancyUpload.js
 * FancyUpload - Flash meets Ajax for beauty uploads
 * 
 * Based on Swiff.Base and Swiff.Uploader.
 * 
 * Its intended that you edit this class to add your
 * own queue layout/text/effects. This is NO include
 * and forget class. If you want custom effects or
 * more output, use Swiff.Uploader as interface
 * for your new class or change this class.
 * 
 * USAGE:
 *  var inputElement = $E('input[type="file"]');
 * 	new FancyUpload(inputElement, {
 * 		swf: '../swf/Swiff.Uploader.swf'
 * 		// more options
 * 	})
 * 
 * 	The target element has to be in an form, the upload starts onsubmit
 * 	by default.
 * 
 * OPTIONS:
 * 
 * 	url: Upload target URL, default is form-action if given, otherwise current page
 *  swf: Path & filename of the swf file, default: Swiff.Uploader.swf
 *  multiple: Multiple files selection, default: true
 *  queued: Queued upload, default: true
 *  types: Object with (description: extension) pairs, default: Images (*.jpg; *.jpeg; *.gif; *.png)
 *  limitSize: Maximum size for one added file, bigger files are ignored, default: false
 *  limitFiles: Maximum files in the queue, default: false
 *  createReplacement: Function that creates the replacement for the input-file, default: false, so a button with "Browse Files" is created
 *  instantStart: Upload starts instantly after selecting a file, default: false
 *  allowDuplicates: Allow duplicate filenames in the queue, default: true
 *  container: Container element for the swf, default: document.body, used only for the first FancyUpload instance, see QUIRKS
 *  optionFxDuration: Fx duration for highlight, default: 250
 *  queueList: The Element or ID for the queue list
 *  onComplete: Event fired when one file is completed
 *  onAllComplete: Event fired when all files uploaded
 * 
 * NOTE:
 * 
 * 	Flash FileReference is stupid, the request will have no cookies
 * 	or additional post data. Only the file is send in $_FILES['Filedata'],
 * 	with a wrong content-type (application/octet-stream).
 * 	When u have sessions, append them as get-data to the the url.
 * 
 * 
 * @version		1.0rc1
 * 
 * @license		MIT License
 * 
 * @author		Harald Kirschner <mail [at] digitarald [dot] de>
 * @copyright	Authors
 */
var FancyUpload = new Class({

	options: {
		url: false,
		swf: 'Swiff.Uploader.swf',
		multiple: true,
		queued: true,
		types: {'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'},
		limitSize: false,
		limitFiles: false,
		createReplacement: null,
		instantStart: false,
		allowDuplicates: false,
		optionFxDuration: 250,
		container: null,
		queueList: 'photoupload-queue',
		onComplete: Class.empty,
		onError: Class.empty,
		onCancel: Class.empty,
		onAllComplete: Class.empty
	},

	initialize: function(el, options){
		this.element = $(el);
		this.setOptions(options);
		this.options.url = this.options.url || this.element.form.action || location.href;
		this.fileList = [];

		this.uploader = new Swiff.Uploader({
			onOpen: this.onOpen.bind(this),
			onProgress: this.onProgress.bind(this),
			onComplete: this.onComplete.bind(this),
			onError: this.onError.bind(this),
			onSelect: this.onSelect.bind(this)
		}, this.initializeFlash.bind(this), {
			swf: this.options.swf,
			types: this.options.types,
			multiple: this.options.multiple,
			queued: this.options.queued,
			container: this.options.container
		});
	},

	initializeFlash: function() {
		this.queue = $(this.options.queueList);
		$(this.element.form).addEvent('submit', this.upload.bindWithEvent(this));
		if (this.options.createReplacement) this.options.createReplacement(this.element);
		else {
			new Element('input', {
				type: 'button',
				value: 'Browse Files',
				events: {
					click: this.browse.bind(this)
				}
			}).injectBefore(this.element);
			this.element.remove();
		}

	},

	browse: function() {
		this.uploader.browse();
	},

	upload: function(e) {
		if (e) e.stop();
		this.uploader.send(this.options.url);
	},

	onSelect: function(name, size) {
		if (this.uploadTimer) this.uploadTimer = $clear(this.uploadTimer);
		if ((this.options.limitSize && (size > this.options.limitSize))
			|| (this.options.limitFiles && (this.fileList.length >= this.options.limitFiles))
			|| (!this.options.allowDuplicates && this.findFile(name, size) != -1)) return false;
		this.addFile(name, size);
		if (this.options.instantStart) this.uploadTimer = this.upload.delay(250, this);
		return true;
	},

	onOpen: function(name, size) {
		var index = this.findFile(name, size);
		this.fileList[index].status = 1;
		if (this.fileList[index].fx) return;
		this.fileList[index].fx = new Element('div', {'class': 'queue-subloader'}).injectInside(
				new Element('div', {'class': 'queue-loader'}).setHTML('Uploading').injectInside(this.fileList[index].element)
			).effect('width', {
				duration: 200,
				wait: false,
				unit: '%',
				transition: Fx.Transitions.linear
			}).set(0);
	},

	onProgress: function(name, bytes, total, percentage) {
		this.uploadStatus(name, total, percentage);
	},

	onComplete: function(name, size) {
		var index = this.uploadStatus(name, size, 100);
		this.fileList[index].fx.element.setHTML('Completed');
		this.fileList[index].status = 2;
		this.highlight(index, 'e1ff80');
		this.checkComplete(name, size, 'onComplete');
	},

	/**
	 * Error codes are just examples, customize them according to your server-errorhandling
	 * 
	 */
	onError: function(name, size, error) {
		var msg = "Upload failed (" + error + ")";
		switch(error.toInt()) {
			case 500: msg = "Internal server error, please contact Administrator!"; break;
			case 400: msg = "Upload failed, please check your filesize!"; break;
			case 409: msg = "Could not process image, please choose another!"; break;
			case 415: msg = "Unsupported media type, please upload GIF, PNG, TIFF or JPEG!"; break;
			case 412: msg = "Invalid target, please reload page and try again!"; break;
			case 417: msg = "Photo too small, please keep our photo manifest in mind!"; break;
		}
		var index = this.uploadStatus(name, size, 100);
		this.fileList[index].fx.element.setStyle('background-color', '#ffd780').setHTML(msg);
		this.fileList[index].status = 2;
		this.highlight(index, 'ffd780');
		this.checkComplete(name, size, 'onError');
	},

	checkComplete: function(name, size, fire) {
		this.fireEvent(fire, [name, size]);
		if (this.nextFile() == -1) this.fireEvent('onAllComplete');
	},

	addFile: function(name, size) {
		if (!this.options.multiple && this.fileList.length) this.remove(this.fileList[0].name, this.fileList[0].size);
		this.fileList.push({
			name: name,
			size: size,
			status: 0,
			percentage: 0,
			element: new Element('li').setHTML('<span class="queue-file">'+ name +'</span><span class="queue-size" title="'+ size +' byte">~'+ Math.ceil(size / 1000) +' kb</span>').injectInside(this.queue)
		});
		new Element('a', {
			href: 'javascript:void(0)',
			'class': 'input-delete',
			title: 'Remove from queue',
			events: {
				click: this.cancelFile.bindWithEvent(this, [name, size])
			}
		}).injectBefore(this.fileList.getLast().element.getFirst());
		this.highlight(this.fileList.length - 1, 'e1ff80');
	},

	uploadStatus: function(name, size, percentage) {
		var index = this.findFile(name, size);
		this.fileList[index].fx.start(percentage).element.setHTML(percentage +'%');
		this.fileList[index].percentage = percentage;
		return index;
	},

	uploadOverview: function() {
		var l = this.fileList.length, i = -1, percentage = 0;
		while (++i < l) percentage += this.fileList[i].percentage;
		return Math.ceil(percentage / l);
	},

	highlight: function(index, color) {
		return this.fileList[index].element.effect('background-color', {duration: this.options.optionFxDuration}).start(color, 'fff');
	},

	cancelFile: function(e, name, size) {
		e.stop();
		this.remove(name, size);
	},

	remove: function(name, size, index) {
		if (name) index = this.findFile(name, size);
		if (index == -1) return;
		if (this.fileList[index].status < 2) {
			this.uploader.remove(name, size);
			this.checkComplete(name, size, 'onCancel');
		}
		this.fileList[index].element.effect('opacity', {duration: this.options.optionFxDuration}).start(1, 0).chain(Element.remove.pass([this.fileList[index].element], Element));
		this.fileList.splice(index, 1);
		return;
	},

	findFile: function(name, size) {
		var l = this.fileList.length, i = -1;
		while (++i < l) if (this.fileList[i].name == name && this.fileList[i].size == size) return i;
		return -1;
	},

	nextFile: function() {
		var l = this.fileList.length, i = -1;
		while (++i < l) if (this.fileList[i].status != 2) return i;
		return -1;
	},

	clearList: function(complete) {
		var i = -1;
		while (++i < this.fileList.length) if (complete || this.fileList[i].status == 2) this.remove(0, 0, 0, i--);
	}
});

FancyUpload.implement(new Events, new Options);

Conclusion

Voila pour plus d'informations vous pouvez allés sur http://digitarald.de/project/fancyupload/
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 novembre 2007 14:07:07 :
J'ai remplacer FancyUpload.js par la version non compressé j'ai rajouté aussi Swiff.Uploader.fla et Swiff.Uploader.as pour ceux qui veulent voir comment fonctionne l'action script ou pour pouvoir modifier le swf. Enfin j'ai ajouté à tout ca la librairie Mootools (http://mootools.net/download) !

Commentaires et avis

signaler à un administrateur
Commentaire de Arto_8000 le 21/11/2007 01:56:02

Il manque des sources et des fichiers. Il manque la source du fichier FancyUpload.js (version dépaqueté) et Swiff.Uploader.swf. Tu utilises probablement la librairie prototype ou quelque chose dans le genre, où sont ces fichiers ?

signaler à un administrateur
Commentaire de Vagners le 21/11/2007 16:52:46

Demo sur http://digitarald.de/playground/uplooad.html

signaler à un administrateur
Commentaire de caviar le 22/11/2007 11:02:59

Salut,
je ne vois que du js et flash dans ta sourche ... j'ai du mal à comprendre comment on peut écrire un fichier sur un serveur en se servant que de ces deux techno ... normalement u niveau sécurité ça passe pas...
faudrai un jsp ou un php ou un asp ou un truc exécuté côté serveur quoi ...
@+

signaler à un administrateur
Commentaire de caviar le 22/11/2007 11:05:33

tiens d'ailleurs sur leur page de test ils donne une source php qui va avec

<?
if ($_FILES['Filedata']['name'] && ($log = fopen('./upload.log', 'a') ) )
{
$file = $_FILES['Filedata']['tmp_name'];
$error = false;

/**
* THESE ERROR CHECKS ARE JUST EXAMPLES HOW TO USE THE REPONSE HEADERS
* TO SEND THE STATUS OF THE UPLOAD, change them!
*
*/

if (!is_uploaded_file($file) || ($_FILES['Filedata']['size'] > 2 * 1024 * 1024) )
{
$error = '400 Bad Request';
}
if (!$error && !($size = @getimagesize($file)))
{
$error = '409 Conflict';
}
if (!$error && !in_array($size[2], array(1, 2, 3, 7, 8) ) )
{
$error = '415 Unsupported Media Type';
}
if (!$error && ($size[0] < 25) || ($size[1] < 25))
{
$error = '417 Expectation Failed';
}

/**
* This simply writes a log entry
*/
fputs($log, ($error ? 'FAILED' : 'SUCCESS') . ' - ' . gethostbyaddr($_SERVER['REMOTE_ADDR']) . ": {$_FILES[Filedata][name]} - {$_FILES[Filedata][size]} byte \n" );
fclose($log);

if ($error)
{
/**
* ERROR DURING UPLOAD, one of the validators failed
*
* see FancyUpload.js - onError for header handling
*/
header('HTTP/1.0 ' . $error);
die('Error ' . $error);
}
else
{
/**
* UPLOAD SUCCESSFULL AND VALID
*
* Use move_uploaded_file here to save the uploaded file in your directory
*/

}

die('Upload Successfull');

}
?>

signaler à un administrateur
Commentaire de Vagners le 22/11/2007 11:14:44

ouai en fait j'avai deja essayé avec ce script php mais j'avai oublié de le posté c cool de l'avoir fait d'ailleur.
Le soucis c plutôt le comment paramétrer le script pour qu'il upload dans tel dossier avec un poid max de tant etc ...
Mais je vai me remettre à essayé de le faire marcher.

signaler à un administrateur
Commentaire de alover971 le 26/11/2007 08:01:49

c'est dans l'appel de la page.. c'est tout con franchement, plus que ca tu meurs..
la destination des fichiers tu parametre ca dans le PHP !
La taille max et les extension autorisé (et autre parametrage)
c'est dans la page appelante, ou tu defini que cet input sera remplacer pas le input flash ..
tout est marqué et expliquer, y'a une doc sur leur site en plus..

signaler à un administrateur
Commentaire de Billybobbonnet le 30/11/2007 16:58:34

Salut à tous,

Excellente source, que j'utilise et qui a marqué mes débuts en java. Le pépin c'est que la page php de laquelle je l'envoie contient une variable avec le nom d'utilisateur. Or, la page php qui s'occupe de l'action de la form d'upload ne récupère pas cette variable, même si je la mets en variable de session > $_SESSION ['user']= $user

Je sais qu'on est pas sur phpcs.fr mais c'est ici que je trouve la source que j'utilise, donc c'est ici que je poste.

Merci!

signaler à un administrateur
Commentaire de lulociel le 30/11/2007 18:27:51

Bonjour,
Je découvre ce script et je le test. J'ai tout installé comme il est conseillé de le faire sur le site source. J'ai également trouvé des explications sur d'autres sites et je crois être ok la-dessus.
Seulement, quand je lance la page, j'ai une erreur d'exécution javascript. Firebug m'annonce que :
Swiff.getVersion is not a function (à la ligne 52 de Swiff.Uploader.js)

J'avoue ne pas comprendre. J'ai installé mootools 1.2dev et j'ai ce soucis quelque soit le navigateur. J'ai besoin d'une piste.
Je vous serais très reconnaissant pour toute l'aide que vous pourriez m'apporter.

signaler à un administrateur
Commentaire de alover971 le 30/11/2007 18:41:07

C'est pas du java mais du javascript...

signaler à un administrateur
Commentaire de outim le 13/12/2007 14:33:14

J'ai reussiiii !! Hourra !!

Bon donc j'ai mélangé les exemples , les tutos et les apirateurs a sites pour tenter de cree rune version semblable a l'exemple , puis je l'ai traduit et resumé , voila ce que ça donne :
http://mindcrumb.free.fr/fancyIdle/


Pour télécharger cet exemple et tous les fichiers assosciés a cet exemple , le zip est ICI: http://mindcrumb.free.fr/Fancyupload.zip


J'espere que ça vous servira et que ça permettra a d'autres de moins galerer que moi.

signaler à un administrateur
Commentaire de Vagners le 13/12/2007 20:58:57

Super je regarde ca !

signaler à un administrateur
Commentaire de bugmenot1 le 13/12/2007 23:38:20

salut outim, je n'arrive pas a télécharger ton fichier, peux tu m'aider ?
merci!

signaler à un administrateur
Commentaire de bugmenot1 le 13/12/2007 23:43:20

jai reussi a le telecahrger, mais en fait le sciprt ne fonctionne pas... car les fichiers sont stockés nulle part ?!

signaler à un administrateur
Commentaire de viktorlebelge le 22/12/2007 06:54:35

Salut Outim, je crois pouvoir affirmer de ton script ne fonctionne pas.

signaler à un administrateur
Commentaire de vares2 le 22/12/2007 11:19:40

J'ai téléchargé le script Fancy Upload que vous avez modifié.
Je l'ai installé sur mon serveur. Pour les fichiers de moins d'1 Mo le script uppload correctement le fichier.
Par contre pour les fichiers volumineux, la barre de progression m'affiche 100% en moins de 30 secondes; mais lorque que je me connecte au serveur je ne vois pas le fichier uploadé, il faut que j'attende plusieurs minutes voir heures pour que le fichier soit sur le serveur/

Cela m'est préjudiciable parce je voudrais uploader des videos puis les converir en un autre format, la conversion ne peut se faire que si le fichier se trouve sur le serveur. Je suis vraiment bloqué.

Je sollicite votre aide pour m'aider à regler le problème.
Je veux que la barre de progression m'affiche 100% lorsque le fichier a été totalement et effectivement uploader et se trouve dans un dossier du serveur

NB: j'ai modifié le php.ini pour qu'il supporte l'upload de fichier volumineux

Merci

signaler à un administrateur
Commentaire de Arto_8000 le 22/12/2007 19:30:12

Le 1 mo c'est ta limite de grosseur de fichier, plus gros que ça le serveur les supprime automatiquement et termine la requête. Donc ça t'afficher 100% parce que c'est complété et le fichier n'est pas là parce qu'il est trop gros.

signaler à un administrateur
Commentaire de vares2 le 22/12/2007 19:46:24

slt Arto_8000 comment faire pour pouvoir uploader de volumineux fichiers?

signaler à un administrateur
Commentaire de viktorlebelge le 22/12/2007 21:11:07

Je voudrais savoir si vous arrivez bien à sélectionner plusieurs fichiers dans un dossier en maintenant
SHIFT ou CTRL comme dans la version originale parce que chez moi, celà ne fonctionne déjà pas et c'est pour
moi le plus gros avantage de ce script (que j'ai découvert en essayant Joomla) en plus des barres de progression.
En vous remerciant.

signaler à un administrateur
Commentaire de Arto_8000 le 22/12/2007 22:31:08

Vares2 -> Faut modifier les configurations de Apache, si tu n'a pas accès à cela sur ton serveur essaie de l'uploader en plusieurs parties.

signaler à un administrateur
Commentaire de Vagners le 26/12/2007 02:15:38

La limite d'upload est fixé à false (limitSize: false dans FancyUpload.js), et pourtant
tous les fichiers de plus d'1mo téléchargés n'arrivent pas sur le serveur.
hum étrange

signaler à un administrateur
Commentaire de Arto_8000 le 26/12/2007 17:13:03

C'est pas dans ces configurations là. C'est ceux de Apache qui ont priorité pour limité la taille des fichiers.

signaler à un administrateur
Commentaire de Vagners le 27/12/2007 05:07:57

Apache apache je veux bien mais chez free c'est 2mo la limite d'upload pas 300 ko !!
je pige pas franchement ... 5h du matin WaOu je vai ptet laissé tomber kan mem.
a+

signaler à un administrateur
Commentaire de viktorlebelge le 29/12/2007 18:37:57

Bonjour,

S'il vous plait, est-ce que quelqu'un peut me dire si ce script fonctionne chez lui, s'il arrive bien à envoyer plusieurs fichiers d'un coup avec une barre de progression par fichier ?

J'ai parcouru de nombreux sites pour essayer de trouver ce script en version fonctionnelle et rien n'y fait. Merci d'avance pour vos réponses.

signaler à un administrateur
Commentaire de Vagners le 30/12/2007 20:45:14

Salut Victor
Belge ou pas si tu galère je te propose de télécharger cet exemple qui marche : http://mindcrumb.free.fr/Fancyupload.zip
a+

signaler à un administrateur
Commentaire de Billybobbonnet le 02/01/2008 08:25:32

Salut à tous,

Moi j'ai réussi à l'installer sur un serveur mais lorsque j'ai virtualisé ce serveur et que je l'ai mis dans un autre environnement, je suis tombé sur quelques problèmes au delà de 12 Mo, ça ne passe plus. Le fichier temporaire est téléchérgé mais php ne prend pas le relai.

Pour aider, je rappele qu'il faut voir du côté des tailles d'upload, et max post file size (ou un truc comme ça) dans le php.ini et dans fancyupload.js, en début il y a aussi une variable de taille. N'oubliez pas de faire un utf8_décode en php sur les variables qui seront renvoyés via l'url

Bon courage à tous, si quelqu'un à une suggestion pour mon pépin...

signaler à un administrateur
Commentaire de Vagners le 03/01/2008 02:06:39

A ba c'est génant pour ceux qui sont chez free alors, le php.ini ne peut se modifier !

signaler à un administrateur
Commentaire de ludovichi le 08/01/2008 21:47:43

Bonsoir,
je galere depuis quelque jours avec ce script :( j'ai téléchargé le package de cette adresse http://mindcrumb.free.fr/Fancyupload.zip et installer ici http://www.jlt7.com/boutique/test/upload/1/ mais en vain cela ne fonctionne pas.
Est ce quelqu'un arrive à le faire fonctionner ?
Merci d'avance

signaler à un administrateur
Commentaire de viktorlebelge le 09/01/2008 08:39:23

Je l'ai aussi téléchargé à cet endroit et chez moi non plus, ça ne fonctionne pas, j'ai essayé avec Easy PHP 2.0b1, avec Xamp Lite et online sur mon compte Planet Work avec IE6 et Firefox 2.0 mais rien à faire...

Il doit soit me manquer des morceaux de script ou il faut configurer une partie selon je ne sais pas quoi parce que la version de ce script intégrée à Joomla fonctionne parfaitement chez moi, par contre.

signaler à un administrateur
Commentaire de vares2 le 17/01/2008 13:20:46

Salut,
Je vous conseille ce script (upload+progress bar) il marche à merveille http://srmiles.com/freestuff/ajax_file_uploader/#download

Je l'ai même installé sur mon site  http://www.abidjantivi.com/My_Upload.php

signaler à un administrateur
Commentaire de viktorlebelge le 17/01/2008 15:48:44

Salut Vares2, c'est sympa de ta part mais j'ai déjà des scripts du genre de celui que tu proposes et personnellement, je n'ai pas envie de lâcher l'affaire par rapport à Fancy Upload qui est le top du top pour moi, du moins lorsque je trouverai enfin une version fonctionnelle.

signaler à un administrateur
Commentaire de vares2 le 17/01/2008 15:53:57

J'ai testé fancy uplaod et il marche chez moi mais le seul hic est qu'il faille attendre longtemps après pour que le fichier soit uploadé sur le serveur distant

signaler à un administrateur
Commentaire de viktorlebelge le 18/01/2008 02:29:58

J'ai réussi à mélanger et adapter ce que j'avais téléchargé à gauche et à droite pour obtenir une version fonctionnelle (parce que celle de outim n'allait pas chez moi), alors je me permets de mettre un lien (http://www.etendard.fr/viktorlebelge/fancy.rar), je l'ai testée sous easyphp 2.0 et online (chez Planet-Work), le seul hic et qu'il ne fonctionne que sous Firefox. Si vous avez une idée du pourquoi, je vous en remercie d'avance.

signaler à un administrateur
Commentaire de viktorlebelge le 20/01/2008 03:35:56

C'est encore moi, j'ai réussi à bidouiller une version avec génération de miniatures, je sais que ça peut intéresser pas mal de monde, là voici : http://etendard.fr/viktorlebelge/fancy.rar

signaler à un administrateur
Commentaire de viktorlebelge le 21/01/2008 03:17:23

Voilà, j'ai bidouillé les modifications nécessaires pour que ça fonctionne sous IE6 aussi (je ne sais pas tester sous IE7 (pour le moment)), le nom des images est aussi automatiquement converti en minuscule.

Testé en local et online, il est nécessaire de modifier le chemin (en chemin absolu) dans index.php.

P.S. : Fonctionne avec des images de taille 1280x1024 maxi.

signaler à un administrateur
Commentaire de Vagners le 27/01/2008 23:32:22

salut Victor, t'as source avec la génération de miniatures ne fonctionne mais pas moyen de voir de miniatures ... elle fonctionne chez toi ? sinon c'est une bonne idée, salut

signaler à un administrateur
Commentaire de viktorlebelge le 29/01/2008 13:02:52

Salut Vagners, qu'est-ce qui ne fonctionne pas exactement? juste les miniatures ou les deux? ensuite, tu testes en local ou online? avec IE6, IE7 ou FF2?

signaler à un administrateur
Commentaire de Vagners le 29/01/2008 19:33:47

euuu en fait ça marche je pensai juste que ton script affichait les miniatures pendant l'upload parce que c'est bien l'intérêt que je voyais à cette modification.

signaler à un administrateur
Commentaire de viktorlebelge le 30/01/2008 09:12:10

Je vais me pencher sur cette option d'ici quelques jours. a+

signaler à un administrateur
Commentaire de Dudule13 le 13/02/2008 16:17:39

serait il possible d'avoir une doc quelque chose pour pouvoir retoucher ce qu'on a besoin de retoucher ?
notamment expliquer les diverses fonctions, pas en détails mais dans les grandes lignes quoi.
mon adresse MSN et e-mail : jerome.arnoult@laposte.net

merci d'avance

signaler à un administrateur
Commentaire de viktorlebelge le 16/02/2008 20:52:07

Ce serait trop beau, ça. Moi je n'ai personnellement pas de doc sur ce script mais de bonnes notions qui font que je peux le bidouiller. Et pour le moment, je travaille sur un autre projet.

signaler à un administrateur
Commentaire de mnouzahir le 29/02/2008 13:29:37

j'ai réussi à l'installer
est voici le lien
http://www.phpcs.com/codes/UPLOAD-PLUSIEURS-FICHIERS-AJAX-FLASH-PHP_45907.aspx

signaler à un administrateur
Commentaire de viktorlebelge le 29/02/2008 16:53:02

Mnouzahir, tu as essayé la version que j'ai mis en lien ? Parce que la tienne ne fonctione ni sur IE, ni sur FF2...

signaler à un administrateur
Commentaire de Dudule13 le 29/02/2008 20:49:06

Il y a une autre alternative l'extension PECL APC qui sera mis d'office dans php6
cette extension nous permet de lire dans le cache d'apache.

donc de savoir ce qui a etait deja uploadé :)

voila pour ceux qui ne sont pas satisfait comme moi par ces scripts

signaler à un administrateur
Commentaire de viktorlebelge le 29/02/2008 23:05:48

Do you speak martien ?

signaler à un administrateur
Commentaire de mnouzahir le 01/03/2008 13:29:09

Maintenant c'est bien ça marche j'ai seulement oublié de supprimer une ligne que j'ai ajouté.

signaler à un administrateur
Commentaire de viktorlebelge le 08/03/2008 04:48:51

Bonjour,

J'ai mis ma version à jour, elle se trouve ici : http://www.charlier-huy.be/viktorlebelge/upload.rar

Elle permet de choisir le dossier de destination, créer des miniatures, écrire dans une base de données (le script de création des tables se trouve dans le fichier « aide.txt »), et enfin, visualiser automatiquement les images envoyées.

N'oubliez pas de consulter le fichier « aide.txt », vous verrez, ce n'est pas compliqué à mettre en place et ça fonctionne.

signaler à un administrateur
Commentaire de Vagners le 09/03/2008 20:17:55

Salut Victor,
Super idées de modif que tu à là mais il n'a pas l'air de marcher , je ne voi même pas d'input pour envoyer un fichier après l'avoir selectionné !
a+

signaler à un administrateur
Commentaire de viktorlebelge le 09/03/2008 22:03:56 10/10

Salut Vagners, as-tu bien suivi mes instructions qui se trouvent dans le fichier aide.txt?

signaler à un administrateur
Commentaire de viktorlebelge le 09/03/2008 22:07:25

D'ici quelques jours, j'ajouterai la possibilité de mofidier l'ordre des photos et la suppression d'une photo ou de toute la galerie.

signaler à un administrateur
Commentaire de djejoo le 09/04/2008 12:32:39

Salut, j'aimerai savoir si par hasard tu avais "ajouté la possibilité de mofidier l'ordre des photos et la suppression d'une photo ou de toute la galerie"

Merci pour l'info ;)

signaler à un administrateur
Commentaire de viktorlebelge le 09/04/2008 20:05:48

Salut, je l'ai fait je dois juste réadapter tout ça pour ce script précisément, ce sera fait d'ici deux ou trois jours, je laisserai un message pour te dire quand c'est fait.

à+

signaler à un administrateur
Commentaire de djejoo le 10/04/2008 18:30:58

Merci c'est sympa de ta part ;)

++

signaler à un administrateur
Commentaire de zn415 le 26/05/2008 00:51:15

Bonjour, il semble que le fichier proposé par viktorbelge ne fonctionne pas, j'obtient des erreurs javascripts (fancy_script.php):


illegal character
http://www.mon site.com/upload/inc/fancyupload/FancyUpload.js
Line 2


FancyUpload is not defined
http://www.mon site.com/upload/fancy_script.php
Line 28


Lorsque je selectionne un fichier a transferé et que je clique sur transferer rien ne se passe.

Quelqu'un aurait t'il une version fonctionnelle de ce scripte? J'ai testé avec un hebergement chez infomaniak.

signaler à un administrateur
Commentaire de zn415 le 26/05/2008 01:31:47

Je viens de voir que mon fichier .hacess possait probleme, je l'ai supprimé mais il subsite un problème de droit d'ecriture car les fichiers ne sont pas transferés

signaler à un administrateur
Commentaire de zn415 le 26/05/2008 01:49:02

fancyIdle2 (http://mindcrumb.free.fr/Fancyupload.zip) fonctionne lui parfaitement  kuste en mettent le repertoire rep en 777

Pas de blabla ça marche directement.

signaler à un administrateur
Commentaire de zn415 le 26/05/2008 01:49:58

Je voulais ecrire le repertoire temp

signaler à un administrateur
Commentaire de viktorlebelge le 26/05/2008 03:59:44

Ma version fonctionne, lis le fichier d'aide...

signaler à un administrateur
Commentaire de zn415 le 26/05/2008 18:44:44

Faut arrêter de croire qu'ont n'a pas lu ton aide , évidement j'ai lu ce fichier. Ta modification de ce scripte ne fonctionne pas tel quel c'est tout, il semble que personne d'autre que toi n'est réussi à faire fonctionner le scripte. Je suppose que tu a effectué des modifications sur ton serveur distant sans en tenir compte dans la version que tu nous propose.

signaler à un administrateur
Commentaire de viktorlebelge le 27/05/2008 01:41:00

Pas obligé d'être agressif, je ne sais pas pour qui tu te prends mon grand mais tu vas tout d'abord te calmer !

Ensuite, saches que justement j'ai eu des messages personnels et des questions sur d'autres sites à propos de ce script qui  apparemment fonctionne chez pas mal de personnes quand même.

[Je suppose que tu as effectué des modifications sur ton serveur distant sans en tenir compte dans la version que tu nous propose.] --> Ne suppose rien, cela vaut mieux.

Si tu veux de l'aide, commence à expliquer sur quel type d'hébergement tu as essayé le script.

signaler à un administrateur
Commentaire de kossolax le 02/06/2008 15:38:09 10/10

j adore ton script
mais tu pourrais aussi faire en sorte qu on ne puisse pas envoyez que des photos et que si c est un fichier a la place du zoom sa le télécharge :)

signaler à un administrateur
Commentaire de zn415 le 02/06/2008 18:27:19

J'ai testé sur infomaniak, et je ne suis pas agressif, juste un peu embêté qu'on me réponde de lire l'aide alors que c'est la première chose que j'ai fait.

signaler à un administrateur
Commentaire de viktorlebelge le 02/06/2008 18:34:57

Ok, autant pour moi, alors.

L'as-tu testé en local et surtout, as-tu réussi à faire fonctionner le script de mindcrumb sur ton hébergement?

j'ai testé ma version chez trois hébergeurs différents et elle fonctionne sur les trois.

P.S. : Je compte apporté quelques autres fonctionnalités sur ce script mais en ce moment, je n'ai vraiment pas le temps.

signaler à un administrateur
Commentaire de djboys le 10/06/2008 16:20:56

Bonjour zn415,

J'aime bien ta version qui est fonctionnel sauf un petit problème si tu as la solution ou quelqu'un d'autre, quand je suis avec IE 6 le bouton parcourir ne pas sélectionner plusieurs fichier (pas de problème avec mozilla).
Cordialement.

signaler à un administrateur
Commentaire de djboys le 10/06/2008 16:23:02

pour kossolax
pour uploader tous types de fichiers remplacer dans le fichier FancyUpload.js :
types: {'Images (*.jpg, *.jpeg, *.gif, *.zip)': '*.jpg; *.jpeg; *.gif; *.zip'},
par :
types: {'vedio (*.avi, *.mpeg, *.mov, *.png)': '*.avi; *.mpeg; *.mov; *.png','Documents(*.doc, *.pdf, *.rtf, *.xls)': '*.doc; *.pdf; *.rtf; *.xls','Tous type': '*.*'},

Cordialement

signaler à un administrateur
Commentaire de kossolax le 10/06/2008 16:26:23

mais a l'affichage sa va pas mettre la photo du fichier uploadé
se serai mieu que sa mette un iconne en rapport avec le fichier uploadé si tu vois se que je veux dire :)

signaler à un administrateur
Commentaire de djboys le 10/06/2008 16:45:10

tu peux faire un script d'affichage des fichiers du dossier temp

signaler à un administrateur
Commentaire de kossolax le 10/06/2008 16:48:40

j y connais rien en php :[

signaler à un administrateur
Commentaire de piep14 le 16/07/2008 19:36:46

Est ce qu'il serait possible que ca affiche la miniature de la photo téléchargé une fois de chargement terminé ?

Merci

signaler à un administrateur
Commentaire de zn415 le 29/08/2008 11:00:48 8/10

J'ai modifié un détail:
(les fichiers n'était pas transférés dans le répertoire upload)


fichier upload.php ligne 33

move_uploaded_file($file, "upload/".$_FILES['Filedata']['name']);

Comment modifier le scripte pour tout transférer d'un coup?

J'imagine que quelqu'un a surement déjà fait cette modif.

En ce qui concerne l'aperçu du fichier image transféré?

Est ce que quelqu'un aurait déjà fait ces modifications?

signaler à un administrateur
Commentaire de zn415 le 29/08/2008 11:07:29

Ce que je voudrais obtenir ressemble a ce qui se trouve sur la capture d'ecran mais en ajoutant un aperçu.

Si quelqu'un possède les modifications ça me ferait gagner du temps, sinon je m'y colle.

signaler à un administrateur
Commentaire de foliop le 27/10/2008 21:01:20

Salut,

QQun a reussi a le faire marcher avec Flash 10 ?
j'ai vu qu'un fix etait sorti pour fanzy mais impossible de l'adapter a ce script la :(

signaler à un administrateur
Commentaire de caviar le 18/11/2008 14:27:39

saluté ... si vous voulez tester une source qui marche avec toutes les configs (à priori en tout cas !) vous pouvez aller jeter un oeil sur ça : http://www.nasuploader.com
++

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

PopUp ajax lors de l'envoi de formulaire [ par newsmatique ] Bonjour,j'ai un formulaire, qui m'envoi des données en GET sur la page traitement.php, je voudrais que lors de l'envoi de ce formulaire cela m'ouvre u formulaire AJAX [ par TomSoyer ] Bonjour à tous.Je suis programmeur débutant et j'aimerais bien faire un formulaire en AJAX avec des radio boutons et quand un clic sur 1 de ces radio Formulaire Ajax [ par bibo06 ] Bonjour, je n'ai jamais fais de script Ajax encore, mais j'ai besoin d'un formulaire interactif un peu spéciale.J'ai fait quelque recherche sur divers Formulaire dynamique [ par alphacrash ] Salut à tous, je vous explique mon problème :Je récupère le contenu d'une chaîne, par exemple celle-ci :$chaine="&lt;html&gt;&lt;body&gt;&lt;input typ Formulaire authentification ajax [ par shafte ] Bonjour,Voilà je débute en ajax et j'aimerai créer un formulaire d'authentification coté client qui va se grace a ajax envoyer les info sur un serveur Générateur dynamique de formulaire Ajax [ par plefebv ] Bonjour ,C'est peut-être une FAQ tant le sujet me semble évident, mais j'ai dû passer à côté. Dans ce cas, merci de me faire savoir où trouver la doc Problème AJAX et balise <form> [ par Valentino ] Bonjour,J'ai récuperé un petit script qui me permet de faire de l'upload ajax (http://blogs.developpeur.org/cyril/archive/2007/03/24/ajax-et-upload-pa Pb de soumission de formulaire php avec jQuery [ par prozenproses ] Bonjour,Avant toute chose je vous annonce que je travaille sur une "plateforme" AJAX avec jQuery.Mon site se compose en 3 partie : - l'entete : qui re ajax et formulaire, les donnees ne sont pas transmises [ par pix270 ] Message d'attente pendant upload [ par cyberrider ] Bonjour,J'ai un formulaire qui permet d'uploader des images, je voudrais une solution pour afficher un message pendant l'upload de l'image du genre "m


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.