Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.03.2011, 01:58
motoroller вне форума Посмотреть профиль Отправить личное сообщение для motoroller Найти все сообщения от motoroller
  № 1  
Ответить с цитированием
motoroller

Регистрация: Jan 2006
Сообщений: 179
По умолчанию Не срабатывет загрузка файла

Код AS3:
package com {
 
	import flash.utils.*;
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.text.*;	
	import fl.controls.ProgressBar;
	import fl.controls.ProgressBarMode;
	import flash.external.ExternalInterface;
 
	public class MainClass extends Sprite {
 
		private var error:TextField = new TextField();
		private var myFormat:TextFormat;
		private var browseButt:MovieClip;
		private var uploadButt:MovieClip;
		private var deleteButt:MovieClip;
		private var db:MovieClip;
 
		private var pb:ProgressBar = new ProgressBar();		
		private var fileTypes:Object = new Object();
		private var fr:FileReference = new FileReference();
 
		private var maxFileSize:Number;
		private var myFlashVars;
 
		private var url;
		private var session:String;
		private var id;
		private var type;
		private var fileFilter;	
 
		private var request:URLRequest;
 
		public function MainClass() {
			// определяем входящие переменные
			myFlashVars = stage.loaderInfo.parameters; // приём внешних параметров
			maxFileSize = myFlashVars.size ? myFlashVars.size : 300;
			url = myFlashVars.url ? myFlashVars.url : 'http://upload/singleUploader/upload.php';
			fileFilter = myFlashVars.fileFilter ? new FileFilter(myFlashVars.fileFilterTitle, myFlashVars.fileFilter) : new FileFilter("Все файлы", "*.*");
			type = myFlashVars.type ? myFlashVars.type : null;
			id = myFlashVars.id ? myFlashVars.id : 0;
			session = myFlashVars.session ? myFlashVars.session : null;
 
			// формат для текста
			myFormat = new TextFormat();
			myFormat.font="Verdana";
			myFormat.color = 0x990000;
			myFormat.size = 12;
 
			// добавляем textField
			error.width=410;
			error.height=20;
			error.x=50;
			error.y=45;
			error.setTextFormat(myFormat);
 
			addChild(error);
 
			// добавляем кнопки
			browseButt = new (getDefinitionByName("ub"));
			browseButt.x=50;
			browseButt.y=20;
			browseButt.addEventListener(MouseEvent.CLICK, browseFiles);
			addChild(browseButt);
 
			// добавляем progressBar
			pb.mode = ProgressBarMode.MANUAL;
			pb.setSize(280, 4);
			pb.move(10, 30);
			pb.visible = false;
			addChild(pb);			
 
			//url + id + "/" + type
			// составляем запрос
			request = new URLRequest(url);
			request.method = URLRequestMethod.POST;	 
			var variables:URLVariables = new URLVariables();            
			variables.id = id;
			variables.type = type;
			variables.session = session;
			request.data = variables;
 
			fr.addEventListener(Event.SELECT, selectHandler);
 
		}
 
		// функция при выборе файлов	
		private function browseFiles(event:MouseEvent):void {
			fr.browse(new Array(fileFilter));
		}
 
		// функция, когда файлы выбраны
		private function selectHandler(event:Event):void { 
 
			if(maxFileSize < round(fr.size/1024)) { // если размер больше
				error.htmlText = "Файл не может превышать <b>" + maxFileSize + "MB</b>";
				error.setTextFormat(myFormat);
				return;
			}
 
			browseButt.removeEventListener(MouseEvent.CLICK, browseFiles);
			browseButt.addEventListener(MouseEvent.CLICK, startUpload);
		}	
 
		private function startUpload(event:MouseEvent):void {
			browseButt.visible = false;
			pb.setProgress(0, 100);
			pb.visible = true;
			fr.addEventListener(ProgressEvent.PROGRESS, progressHandlerFile)
			fr.addEventListener(Event.COMPLETE, completeHandlerFile);
			fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteHandlerFile);
			fr.upload(request);
		}
 
		// функция прогресса отправки файла 
		private function progressHandlerFile(event:ProgressEvent):void {		
			var percentLoadeds = int(Math.round(event.bytesLoaded/event.bytesTotal*100));
			error.htmlText='Файл загружен на <b>' + percentLoadeds + '</b>%';
			error.setTextFormat(myFormat);
			pb.setProgress(event.bytesLoaded, event.bytesTotal);
		}
 
		// функция конца отправки файла 
		private function completeHandlerFile(event:Event):void {			
			pb.visible = false;
			error.htmlText='Файл успешно загружен';
			error.setTextFormat(myFormat);
		}
 
		// функция округления до мегабайт
		private function round(number:Number, pow:Number = 0):Number {
			number=number/1024;
			var kof = Math.pow(10, pow);
			return Math.ceil(number*kof)/kof;
		}
 
		// функция передачи данных в js
		private function uploadCompleteHandlerFile(event:DataEvent):void {
			ExternalInterface.call("receiveFromFlash3", event.data); 
		}
	}
}
Собствено небольшой класс
он работает если запускать из флеш
но если из браузреа пишет: SecurityError: Error #2000: Отсутствует активный контекст безопасности.

Потом переделал повесил события выгрузки на кнопку, все ранво так же ошибка, скажите в чем может быть проблема?

Старый 31.03.2011, 02:28
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 2  
Ответить с цитированием
DZHETIGAPA
[+3 18.04.11]

Регистрация: Dec 2010
Сообщений: 342
Ошибка безопасности. Нужен кроссдомейник скорее всего.

http://help.adobe.com/ru_RU/AS3LCR/F...rityError.html

Старый 31.03.2011, 02:29
motoroller вне форума Посмотреть профиль Отправить личное сообщение для motoroller Найти все сообщения от motoroller
  № 3  
Ответить с цитированием
motoroller

Регистрация: Jan 2006
Сообщений: 179
Спасибо, проблема была в другом, все решено

Старый 03.04.2011, 18:44
JeStas вне форума Посмотреть профиль Отправить личное сообщение для JeStas Найти все сообщения от JeStas
  № 4  
Ответить с цитированием
JeStas

Регистрация: Mar 2011
Сообщений: 5
Цитата:
Сообщение от motoroller Посмотреть сообщение
Спасибо, проблема была в другом, все решено
Ежели не секрет, то в чем была проблема?
На данный момент загрузка файла из приложения swf - на локальной машине http://localhost/domain/ работает, а при публикации на хостинг - не работает!!! Ошибка - SecurityError: Error #2000: Отсутствует активный контекст безопасности.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:38.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.