Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 actionscript 3.0-p2p文件共享问题(最大上载文件大小)_Actionscript 3_Actionscript_P2p_Filereference - Fatal编程技术网

Actionscript 3 actionscript 3.0-p2p文件共享问题(最大上载文件大小)

Actionscript 3 actionscript 3.0-p2p文件共享问题(最大上载文件大小),actionscript-3,actionscript,p2p,filereference,Actionscript 3,Actionscript,P2p,Filereference,我设计了一个p2p应用程序,它可以在没有服务器的情况下传输文件。一切正常。我可以在同级之间传输文件。但事实证明,如果文件大小大于16mb(因为我能传输的最大文件大小为15810 kb),它就不会传输到对等方。这是我正在使用的代码: private function browseFile(farIds:String = ""):void { fIds = farIds; file = new FileReference();

我设计了一个p2p应用程序,它可以在没有服务器的情况下传输文件。一切正常。我可以在同级之间传输文件。但事实证明,如果文件大小大于16mb(因为我能传输的最大文件大小为15810 kb),它就不会传输到对等方。这是我正在使用的代码:

            private function browseFile(farIds:String = ""):void {
            fIds = farIds;
            file = new FileReference();
            file.addEventListener(Event.SELECT, selectHandler);
            file.browse();
        }

        private function selectHandler(event:Event):void {
            var btn = getChild("browseFile_" + fIds)
            if (btn && btn.alpha) btn.alpha = 0.5;
            file = FileReference(event.target);
            file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            file.addEventListener(Event.COMPLETE, completeHandler);
            file.load();
        }

        private function progressHandler(event:ProgressEvent):void{
            ExternalInterface.call("fileLoadProgress", event.target.name, event.bytesTotal, event.bytesLoaded)
        }

        private function completeHandler(event:Event):void{
            ExternalInterface.call("onFileLoaded")
            var fileData:Object = new Object();  
            fileData.file = event.target.data
            fileData.name = event.target.name;
            var btn = getChild("browseFile_" + fIds)
            if (btn && btn.alpha) btn.alpha = 1;
            sendSomeData(fileData, fIds, "receiveFile");
        }

        public function receiveFile(info:Object, peerID:String):void{
            ExternalInterface.call("alert", "receivedFile")
        }

        private function sendSomeData(data,farIds:String,func:String = "receiveSomeData"):void{
            for(var id:String in sendStreams){
                sendStreams[id].send(func, data, myPeerID);
            }
        }
您能告诉我如何允许传输任何大小的所有文件吗


谢谢你的帮助

您可以将文件拆分为8KB大小的块,然后逐个发送。但是,您必须检查收到的数据块的顺序以及途中可能出现的任何损失。

是的,这似乎是解决问题的唯一方法,但如何分割文件以及如何连接其部分?您可能可以使用
ByteArray
来完成所有操作:将
对象
转换为
ByteArray
(使用
ByteArray.writeObject
),将几个
ByteArray
拆分成几个
ByteArray
,并将它们重新连接成一个
ByteArray
(使用
ByteArray.readBytes
ByteArray.writeBytes
),然后将结果解码成一个
对象(使用
ByteArray.readObject
)。