PDA

Просмотр полной версии : Автоматическая запись данных на usb


Sweet07
05.09.2013, 11:09
Доброго времени суток.
Подскажите, как реализовать запись определённых данных (определяется приложением) на вставленный usb носитель автоматически(без действий пользователя). Так как флеш ограничен правами "тихой" работы (почти всеми), то можно ли к примеру с помощью флеш в внешнем текстовом документе хранить название файла, который нужно записать, и записывать его автоматически на вставленный usb-накопитель другой прогой?
С помощью какой программной среды это лучше (или хотя бы можно) реализовать.
Спасибо.
З.Ы: Это не создание вредоносной программы.

Aquahawk
05.09.2013, 12:17
Если это air приложение то сможете и сами записать, а если веб версия, то нет, никак. Т.е. совсем не понятно что вы хотите, т.к. если какой-то программой что-то писать то это значит надо заставить пользователя скачать и поставить эту программу, тогда проще изначальную задачу на air решить.

Sweet07
05.09.2013, 12:43
Суть задачи:
В коридоре стоит информационный киоск с расписанием и другой информацией (приложние сделано в флеш).
К примеру, в очередной раз поменялось расписание обучения или другая инфа. И нужно, чтоб родитель, студент или абитуриент вставил флешку в компьютер и автоматически на неё сохранилось новая информация, как только студент зашёл на соответствующую страницу или вставил флешку находясь на странице расписания.

Раньше это делалось через FileRefrence при нажатии кнопки, что открывало проводник и соответственно открывало дыру для недобросовестных человечков. Пробовал запускать внешний bat при переходе на страницу расписания, но возникли проблемы с определением и наличием устройства.
Было велено дыры залатать - вот и думаю.

Tails
05.09.2013, 12:48
Sweet07,
Для нормальной работы с файловой системой, вам нужно сделать AIR или MDM Zinc приложение. Оба по сути расширяют возможности флешки как настольного приложения.

Котяра
05.09.2013, 13:42
Если это киоск, то скорей всего там эйр и есть.
Записать можно просто через File.
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html

Sweet07
05.09.2013, 18:20
Немного поискал и нашёл это: http://www.slideshare.net/JosephLabrecque/whats-new-in-flash-player-112-and-adobe-air-32

всем спасибо.

Ralph_DiMarko
05.09.2013, 19:37
Зря вы не обратили внимание на сообщение об zinc-e, достаточно мощная штука и проста в интеграции.

Sweet07
06.09.2013, 17:36
Я поступил таким способом:
package {

import flash.display.MovieClip;
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.events.ProgressEvent;
import flash.events.IOErrorEvent;
import flash.net.FileReference;
import flash.filesystem.*;
import flash.events.*;

public class Main extends MovieClip {
private var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
private var currFile:String="Project.swf";
public function Main() {
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();

for (var i:int = 0; i < volumes.length; i++){
if (volumes[i].isRemovable) {
//trace(volumes[i].name, volumes[i].rootDirectory.nativePath);
//copyFile(volumes[i].rootDirectory.nativePath,"Project.swf");
}
}
trace("вставьте usb-носитель");
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, onVolumeMount);
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, onVolumeUnmount);
}
private function copyFile(loc:*,fStr:String):void{
//trace(loc,fStr);
var file:File = File.applicationDirectory.resolvePath(fStr);
var newFile:File = File.userDirectory.resolvePath(loc+"/"+fStr);
file.addEventListener(Event.COMPLETE, fileCopyCompleteHandler);
file.addEventListener(IOErrorEvent.IO_ERROR, fileCopyIOErrorEventHandler);
file.copyToAsync(newFile, true);
}

private function fileCopyCompleteHandler(event:Event):void {
trace("Готово. Для продолжения работы извлеките usb-носитель. //"+event.target); // [object File]
}

private function fileCopyIOErrorEventHandler(event:IOErrorEvent):void {
trace("Ошибка копирования. Для продолжения работы извлеките usb-носитель");
}

private function onVolumeMount(event:StorageVolumeChangeEvent):void {
if (event.storageVolume.isRemovable) {
trace("Removable");
copyFile(event.rootDirectory.nativePath,currFile);
} else {return}
}

private function onVolumeUnmount(event:StorageVolumeChangeEvent):void {
trace(event.rootDirectory.nativePath);
trace("Для копирования документа вставьте usb-носитель");
}
}
}

Довольно интересно получилось.

Sweet07
06.09.2013, 17:46
По презентации - не ту ссылку кинул.
Если кому нужно:
1. Что нового в Adobe AIR
2. Что нового в Flash Player 11