begin process at 2010 03 22 07:42:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > UPLOAD EN AJAX + FLASH (FANCY UPLOAD)

UPLOAD EN AJAX + FLASH (FANCY UPLOAD)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :29 190 / 1 738

Auteur : Vagners

Ecrire un message privé
Site perso
Commentaire sur cette source (73)
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

Les Membres Club peuvent 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) !

 Sources de la même categorie

DÉSACTIVER UN BOUTON SUBMIT APRÈS ENVOI DU FORMULAIRE par SoftDeath
IMPLEMENTATION DE RANDOM PERSONNALISÉ par ousous
IMPLEMENTATION DE HASHTABLE par ousous
JAVASCRIPT.UTIL.ITERATOR par ousous
Source avec Zip Source avec une capture PALETTE DE COULEURS par titnome

 Sources en rapport avec celle ci

DÉSACTIVER UN BOUTON SUBMIT APRÈS ENVOI DU FORMULAIRE par SoftDeath
Source avec Zip Source avec une capture UPLOAD PLUSIEURS FICHIERS FANCYUPLOAD V2 par mnouzahir
Source avec Zip Source avec une capture AJAX : COMPLETER AUTOMATIQUEMENT UN FORMULAIRE (<INPUT TYPE=... par phpajax
Source avec Zip Source avec une capture UPLOAD MULTIPLE PHP [UMP] : TÉLÉCHARGEMENT MULTIPLE (AJOUT E... par bultez
AJAX - UN SEUL APPEL DE FONCTIONS POUR FAIRE DES LIENS ET SO... par Gwinyam

Commentaires et avis

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 ?

Commentaire de Vagners le 21/11/2007 16:52:46

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

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 ...
@+

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

}
?>

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.

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

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!

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.

Commentaire de alover971 le 30/11/2007 18:41:07

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

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.

Commentaire de Vagners le 13/12/2007 20:58:57

Super je regarde ca !

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!

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

Commentaire de viktorlebelge le 22/12/2007 06:54:35

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

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

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.

Commentaire de vares2 le 22/12/2007 19:46:24

slt Arto_8000 comment faire pour pouvoir uploader de volumineux fichiers?

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.

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.

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

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.

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+

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.

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+

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

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 !

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

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.

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

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.

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

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.

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

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.

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

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?

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.

Commentaire de viktorlebelge le 30/01/2008 09:12:10

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

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

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.

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

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

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

Commentaire de viktorlebelge le 29/02/2008 23:05:48

Do you speak martien ?

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

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.

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+

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?

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.

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

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.

à+

Commentaire de djejoo le 10/04/2008 18:30:58

Merci c'est sympa de ta part ;)

++

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.

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

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.

Commentaire de zn415 le 26/05/2008 01:49:58

Je voulais ecrire le repertoire temp

Commentaire de viktorlebelge le 26/05/2008 03:59:44

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

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.

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.

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

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.

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.

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.

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

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

Commentaire de djboys le 10/06/2008 16:45:10

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

Commentaire de kossolax le 10/06/2008 16:48:40

j y connais rien en php :[

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

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?

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.

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

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

Commentaire de ckermorgant le 28/08/2009 18:08:26

Bonjour à tous.
J'essaie de le faire fonctionner dans une application jsp/struts. Le souci c'est que je n'arrive pas à passer des paramètres à l'url.
Je m'explique, voici le code js de l'initialisation de l'uploader:

var up = new FancyUpload2($('demo-status'), $('demo-list'), {
verbose: true,
url : '/monAppli/monAction.do?param=newDocument',

J'ai l'impression qu'a l'upload, il ne poste pas le formulaire avec la totalité de l'url, mais qu'il poste avec /monAppli/monAction.do uniquement.

Savez vous comment je peux ajouter mes paramètres à l'url avant de poster le formulaire.
Merci et Bonne fin de journée.

 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 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 envoi formulaire sans mailto [ par tzam ] Bonjour, je cherche une méthode pour envoyer un formulaire (case à cocher, champ texte...) à une adresse mail définie par avance sans passer par mailt


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales