Принудительная загрузка с Flash AS3 - PullRequest
2 голосов
/ 11 декабря 2011

Я хочу иметь функцию принудительной загрузки только с Flash AS3, это возможно? Я попробовал Google, но не удалось. вот мой код as3 ......

var file_URLRequest:URLRequest = new URLRequest ("mp3gallery/" + url);
var content_header:URLRequestHeader = new URLRequestHeader("Content-Type: application/force-download");
var attach_header:URLRequestHeader = new URLRequestHeader("Content-Disposition: attachment; filename=abc.mp3");

            file_URLRequest.requestHeaders.push(content_header);
            file_URLRequest.requestHeaders.push(attach_header);
            file_URLRequest.method = URLRequestMethod.POST;

            navigateToURL(file_URLRequest, '_blank');

Спасибо.

1 Ответ

1 голос
/ 11 декабря 2011

Это непосредственно из документов :

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.FileReference;
    import flash.net.URLRequest;
    import flash.net.FileFilter;

public class FileReference_download extends Sprite {
    private var downloadURL:URLRequest;
    private var fileName:String = "SomeFile.pdf";
    private var file:FileReference;

    public function FileReference_download() {
        downloadURL = new URLRequest();
        downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf";
        file = new FileReference();
        configureListeners(file);
        file.download(downloadURL, fileName);
    }

    private function configureListeners(dispatcher:IEventDispatcher):void {
        dispatcher.addEventListener(Event.CANCEL, cancelHandler);
        dispatcher.addEventListener(Event.COMPLETE, completeHandler);
        dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        dispatcher.addEventListener(Event.OPEN, openHandler);
        dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
        dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        dispatcher.addEventListener(Event.SELECT, selectHandler);
    }

    private function cancelHandler(event:Event):void {
        trace("cancelHandler: " + event);
    }

    private function completeHandler(event:Event):void {
        trace("completeHandler: " + event);
    }

    private function ioErrorHandler(event:IOErrorEvent):void {
        trace("ioErrorHandler: " + event);
    }

    private function openHandler(event:Event):void {
        trace("openHandler: " + event);
    }

    private function progressHandler(event:ProgressEvent):void {
        var file:FileReference = FileReference(event.target);
        trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
    }

    private function securityErrorHandler(event:SecurityErrorEvent):void {
        trace("securityErrorHandler: " + event);
    }

    private function selectHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url);
    }
}
}

РЕДАКТИРОВАТЬ: это не может работать, если используется таким образом, потому что может потребоваться действие пользователя (щелчок). Поэтому вы должны переместить код, содержащийся в конструкторе, в метод (обработчик щелчка). Конечно, в этом случае btn - это имя экземпляра мувиклипа, размещенного на сцене, а FileReference_download - это DocumentClass.

 public function FileReference_download() {
            btn.addEventListener(MouseEvent.MOUSE_DOWN, downloadMyFile);
        }

        private function downloadMyFile(e:MouseEvent){
            downloadURL = new URLRequest();
            downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf";
            file = new FileReference();
            configureListeners(file);
            file.download(downloadURL, fileName);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...