"错误#2038" :当文件上传的柔性 [英] "Error #2038" : while file upload in flex

查看:144
本文介绍了"错误#2038" :当文件上传的柔性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通了一个错误,因为错误#2038对的ioEvent,而文件中的柔性上传。

我GOOGLE了,但我没有找到任何合适的解决方案可能是如何实现这一点。在code正常工作了。但现在它显示出此错误。

这是IE浏览器的工作,但在其他浏览器中的显示错误。

任何机构有主意吗?

好这里是AS3 code ......请看看

 包com.firstplanet.views.actions
{
进口com.adobe.serialization.json.JSON;
进口com.firstplanet.events.ErrorLogEvent;
进口com.firstplanet.events.SaveAdminItemEvent;
进口com.firstplanet.model.ModelLocator;
进口com.firstplanet.views.modules.admin.winProgress;

进口flash.display.DisplayObject;
进口flash.events.DataEvent;
进口对象类型:flash.events.Event;
进口flash.events.IOErrorEvent在;
进口flash.events.KeyboardEvent;
进口flash.events.ProgressEvent;
进口flash.events.SecurityErrorEvent;
进口flash.net.FileFilter一个;
导入器flash.net.FileReference;
进口类flash.net.FileReferenceList;
进口flash.net.Responder;
进口flash.net.URLRequest;
进口flash.net.URLRequestMethod;
进口flash.net.URLVariables;
进口flash.ui.Keyboard;

进口mx.controls.Alert;
进口mx.core.FlexGlobals;
进口mx.events.FlexEvent;
进口mx.managers.PopUpManager;

公共类FileUploader
{
    公共职能FileUploader()
    {
    }

    [可绑定]私人变种theModel:ModelLocator中= ModelLocator.getInstance();
    私人VAR的URLRequest:的URLRequest;
    私人VAR的FileReference:的FileReference;
    私人VAR的FileReferenceList:对FileReferenceList;
    私人VAR的fileList:阵列;
    私人VAR isLargerFile:布尔;
    私人VAR _winProgress:winProgress;
    私人VAR __errorEvt:ErrorLogEvent;

    [可绑定]公共变种photoName:字符串;
    [可绑定]公共变种theExtension:字符串;
    私人VAR thePhotoTypeID:数字;
    [可绑定]公共变种FILE_NAME:字符串=;
    公共变种theAdminItem:对象=新的对象();
    公共变种serverSideScript:字符串=财产/ PHP / FileUploader.php;
    私人VAR MAX_FILE_SIZE:数字;
    公共变种saveDet:对象;
    公共变种theAdminObj:对象;
    公共变种isUpload:布尔;


    公共职能chooseFiles(的fileType:字符串,FILEFORMAT:字符串,MAX_SIZE:编号):无效
    {
        对FileReferenceList =新的FileReferenceList();
        fileReferenceList.addEventListener(Event.SELECT,onSelectFile);
        fileReferenceList.addEventListener(Event.CANCEL,OnCancel的);
        VAR ARR:数组=​​ [];
        arr.push(新的FileFilter(的fileType,FILEFORMAT));
        调用FileReferenceList.browse(ARR);
        MAX_FILE_SIZE = MAX_SIZE;
        如果(的fileType ==所有)
        {
            isUpload = TRUE;
        }
    }
    私有函数OnCancel的(事件:事件):无效{
        theModel.tempFlag = FALSE;
    }
    私有函数convertBytestoMB(maxFileSize为:编号):号码
    {
        VAR一样令人满意:数字;
        一样令人满意= maxFileSize为/ 1024;
        一样令人满意=一样令人满意/ 1024;

        返回一样令人满意;
    }
    公共职能onSelectFile(事件:事件):无效
    {
        VAR的FileReferenceList:对FileReferenceList =的FileReferenceList(将event.target);
        的fileList = fileReferenceList.fileList;

        //获取用户选择的第一个文件
        的FileReference =的FileReference(的fileList [0]);
        FILE_NAME =的fileList [0]。名称;
        //newFileLabel.label=fileList[0].name;

        //if(fileList[0].size> maxFileSize为)
        如果(的fileList [0] .size>编号(MAX_FILE_SIZE))
        {
            //变种一样令人满意:数= convertBytestoMB(maxFileSize为);
            VAR一样令人满意:数= convertBytestoMB(MAX_FILE_SIZE);
            theModel.uploadStatusMessage =选定的文件是围绕+ Math.round(convertBytestoMB(的fileList [0] .size))+MB请选择必须不超过一个文件。+ +一样令人满意MB。
            theModel.saveErrorLogs(CertificateUpload,theModel.uploadStatusMessage);
            Alert.show(theModel.uploadStatusMessage);
            isLargerFile = TRUE;
            返回;
        }
        其他
        {

            theModel.uploadStatusMessage =;
            isLargerFile = FALSE;
            theModel.saveErrorLogs(CertificateUpload,这不是一个大文件);
            //saveBtn.enabled = TRUE;

        }

        //$p$pviewfileName=fileList[0].name;
        如果(isUpload)
        {
            如果(theModel.fileManagerVO!= NULL)
            {
                uploadFile(../../"+ theModel.fileManagerVO.folderPath,NULL,NULL);
                theModel.saveErrorLogs(CertificateUpload,上传文件路径:../../"+theModel.fileManagerVO.folderPath);
            }
        }
    }

    公共职能uploadFile(路径:字符串,theAdminItem:对象,saveDetObj:对象):无效
    {
        saveDet = saveDetObj;
        theAdminObj = theAdminItem;

        如果(的fileList!= NULL)
        {
            如果(isLargerFile)
            {
                Alert.show(theModel.uploadStatusMessage);
                返回;
            }
            theModel.deleteOldFile = FALSE;
            如果(theAdminItem!= NULL)
            {
                theModel.deleteOldFile = TRUE;
                如果(theAdminItem.url!= NULL)
                {
                    theModel.oldFileName = theAdminItem.url;
                }
            }

            _winProgress = winProgress(PopUpManager.createPopUp(FlexGlobals.topLevelApplication为的DisplayObject,winProgress,真));
            _winProgress.btnCancel.removeEventListener(点击,onUploadCanceled);
            _winProgress.btnCancel.addEventListener(点击,onUploadCanceled);
            //_winProgress.title =上传文件+域;

            如果(的fileList!= NULL)
            {
                _winProgress.txtFile.text =的fileList [0]。名称;
                FILE_NAME =的fileList [0]。名称;
            }
            _winProgress.progBar.label =0%;
            PopUpManager.centerPopUp(_winProgress);

            //变量随上传发送
            VAR sendVars:使用URLVariables =新的URLVariables();
            sendVars.action =上传;
            sendVars.path =路径;

            VAR要求:的URLRequest =新的URLRequest();
            request.data = sendVars;
            request.url = serverSideScript;
            request.method = URLRequestMethod.POST;
            的FileReference =新的FileReference();
            的FileReference =的FileReference(的fileList [0]);
            fileReference.addEventListener(Event.OPEN,onUploadOpen);
            fileReference.addEventListener(使用ProgressEvent.PROGRESS,onUploadProgress);
            fileReference.addEventListener(引发Event.COMPLETE,onUploadComplete);
            fileReference.addEventListener(IOErrorEvent.IO_ERROR,onUploadIoError);
            fileReference.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onUploadSecurityError);
            fileReference.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onUploadCompleteReturn);
            fileReference.upload(要求);
        }
        其他
        {
            // saveItem();
            theModel.deleteOldFile = FALSE;
            submitData(saveDet,theAdminObj);

        }
    }
    私有函数onUploadOpen(EVT:事件):无效
    {
        _winProgress.uploadProgressMessage.text =上传请稍等......
    }
    //获取上传进度
    私有函数onUploadProgress(事件:ProgressEvent):无效
    {
        VAR numPerc:数= Math.round((编号(event.bytesLoaded)/数(event.bytesTotal))* 100);
        _winProgress.progBar.setProgress(numPerc,100);
        _winProgress.progBar.label = numPerc +%;
        _winProgress.progBar.validateNow();
        如果(numPerc大于90)
        {
            _winProgress.btnCancel.enabled = FALSE;
            //_winProgress.uploadProgressMessage.text =裁剪photo..Please的等待......
        }
        其他
        {
            _winProgress.uploadProgressMessage.text =上传请稍等......
            _winProgress.btnCancel.enabled = TRUE;
        }
    }
    私有函数onUploadComplete(事件:事件):无效
    {
        PopUpManager.removePopUp(_winProgress);
        _winProgress.uploadProgressMessage.text =请稍候...
        theModel.uploadStatusMessage =文件已被上传。;
        theModel.saveErrorLogs(CertificateUpload,theModel.uploadStatusMessage);
        如果(isUpload)
        {
            theModel.fileManagerVO.gatewayConnection.call(data.files.getFiles,新的Responder(theModel.fileManagerVO.onFileResult,theModel.fileManagerVO.onFault),theModel.fileManagerVO.folderPath);
        }
    }
    公共职能onUploadCompleteReturn(EVT:DataEvent):无效
    {
        如果(EVT!= NULL)
        {
            如果(evt.data!= NULL)
            {
                尝试
                {
                    theModel.saveErrorLogs(CertificateUpload,来到onUploadCompleteReturn);
                    VAR RAWDATA:字符串= evt.data为String;
                    VAR经理:阵列= JSON.de code(RAWDATA);
                    如果(经理= NULL和放大器;!&安培;!经理[0] = NULL)
                    {
                        VAR TEMPOBJ:对象=经理[0]为对象;
                        VAR状态:布尔= tempObj.theStatus布尔;
                        如果(状态)
                        {
                            如果(tempObj.FileName!= NULL)
                            {
                                photoName = tempObj.FileName为String;
                            }
                            如果(tempObj.theExtension!= NULL)
                            {
                                theExtension = tempObj.theExtension为String;
                            }
                            theModel.uploadStatusMessage =文件已被上传。;
                            theModel.isPhotoUploaded = TRUE;
                            如果(!isUpload)
                            {
                                submitData(saveDet,theAdminObj);
                            }
                        }
                        其他
                        {
                            photoName =;
                            theModel.uploadStatusMessage =该文件不是一个公认的类型或无法被取消codeD。
                        }
                    }
                    PopUpManager.removePopUp(_winProgress);

                }
                赶上(五:错误)
                {
                    Alert.show(在上传文件错误);
                }
            }
            其他
            {
                Alert.show(在上传文件错误);
            }
        }
    }
    私有函数onUploadIoError(事件:IOErrorEvent):无效
    {
        theModel.uploadStatusMessage =IO错误在上传文件。
        PopUpManager.removePopUp(_winProgress);
        theModel.saveErrorLogs(CertificateUpload,event.text);
        //Alert.show("IO错误在上传文件,错误)。
    }
    //调用上载安全错误
    私有函数onUploadSecurityError(事件:SecurityErrorEvent):无效
    {
        theModel.uploadStatusMessage =安全在上传文件时出现错误。
        theModel.saveErrorLogs(CertificateUpload,theModel.uploadStatusMessage);
        //Alert.show("Security错误在上传文件,错误)。
        PopUpManager.removePopUp(_winProgress);
        _winProgress == NULL;
        fileReference.cancel();
    }
    //调用上载取消
    私有函数onUploadCanceled(事件:事件):无效
    {
        PopUpManager.removePopUp(_winProgress);
        theModel.uploadStatusMessage =您已取消操作;
        _winProgress == NULL;
        fileReference.cancel();
        // clearUpload();
    }

    私有函数submitData(theObj:对象,theAdminItem:对象):无效
    {
        如果(photoName!= NULL)
        {
            theObj [网址] = photoName;
        }
        其他
        {
            theObj [网址] = theAdminItem.url;
        }
        如果(theExtension!= NULL)
        {
            theObj [型] = theExtension;
        }
        其他
        {
            theObj [型] = theAdminItem.audio_type;
        }

        theModel.updateCourseDetails(theObj,'图像');
    }

}
 

}

错误

  [IOErrorEvent TYPE =ioError在泡沫=假可取消=假的EventPhase = 2文本=错误#2038]
 

解决方案

嘿,我终于得到了解决。如果任何机构面临着这样的问题,请遵循一些基本的步骤

在这里,我面对的是文件上传功能在IE浏览器(所有版本),但问题它不工作在其他浏览器。

然后按照以下步骤

  • - 首先尝试调度HTTPStatusEvent

  • - 检查什么错误来了。如果URL是有效的它不会给错误其他明智的,它会显示错误responseURL = NULL

  • - 然后检查你的服务器端脚本路径(您使用上传的文件什么的)

  • - 在我来说,我已经通过了完整的URL的文件的路径不一样(资产/.../ fileuploader.php)

  • - 那么错误将得到解决

您会发现在互联网上的许多解决方案。但大多数情况下,检查filereference.IOerrorevent和放大器; filereference.HTTPStatusEvent

请参考以下链接:
<一href="http://help.adobe.com//en_US/FlashPlatform/reference/actionscript/3/flashnet/FileReference.html#includeExamplesSummary" rel="nofollow">http://help.adobe.com//en_US/FlashPlatform/reference/actionscript/3/flashnet/FileReference.html#includeExamplesSummary

I figured out an error as Error #2038 for IOEvent while file uploading in flex.

I googled out but i didn't find any proper solution may be how to implement that. The code is working properly before. But now its showing this error.

This is working in IE but in other browsers its showing error.

Any body having idea ?

Okay here is the AS3 code...please check it out

package com.firstplanet.views.actions
{
import com.adobe.serialization.json.JSON;
import com.firstplanet.events.ErrorLogEvent;
import com.firstplanet.events.SaveAdminItemEvent;
import com.firstplanet.model.ModelLocator;
import com.firstplanet.views.modules.admin.winProgress;

import flash.display.DisplayObject;
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.KeyboardEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.FileReferenceList;
import flash.net.Responder;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import flash.ui.Keyboard;

import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;

public class FileUploader
{
    public function FileUploader()
    {
    }

    [Bindable]private var theModel:ModelLocator = ModelLocator.getInstance(); 
    private var urlRequest:URLRequest;
    private var fileReference:FileReference;
    private var fileReferenceList:FileReferenceList;
    private var fileList:Array;
    private var isLargerFile:Boolean;
    private var _winProgress:winProgress;
    private var __errorEvt:ErrorLogEvent;

    [Bindable] public var photoName:String;
    [Bindable] public var theExtension:String;
    private var thePhotoTypeID:Number;
    [Bindable]public var file_name:String="";
    public var theAdminItem:Object = new Object();
    public var serverSideScript:String = "assets/php/FileUploader.php";
    private var max_file_size:Number;
    public var saveDet:Object;
    public var theAdminObj:Object;
    public var isUpload:Boolean;


    public function chooseFiles(fileType:String,fileFormat:String,max_size:Number):void
    {
        fileReferenceList = new FileReferenceList();
        fileReferenceList.addEventListener(Event.SELECT, onSelectFile);
        fileReferenceList.addEventListener(Event.CANCEL,onCancel);
        var arr:Array = [];
        arr.push(new FileFilter(fileType, fileFormat));
        fileReferenceList.browse(arr);
        max_file_size = max_size;
        if(fileType == "All")
        {
            isUpload = true;
        }
    }
    private function onCancel(event:Event):void{
        theModel.tempFlag = false;
    }
    private function convertBytestoMB(maxFileSize:Number):Number
    {
        var theMb:Number;
        theMb = maxFileSize/1024;
        theMb = theMb/1024;

        return theMb;
    }
    public function onSelectFile(event:Event):void
    {
        var fileReferenceList:FileReferenceList = FileReferenceList(event.target);
        fileList = fileReferenceList.fileList;

        // get the first file that the user chose
        fileReference = FileReference(fileList[0]);
        file_name = fileList[0].name;
        //newFileLabel.label=fileList[0].name;

        //if(fileList[0].size > maxFileSize)
        if(fileList[0].size > Number(max_file_size))
        {
            //var theMB:Number = convertBytestoMB(maxFileSize);
            var theMB:Number = convertBytestoMB(max_file_size);
            theModel.uploadStatusMessage = "Selected file is around "+Math.round(convertBytestoMB(fileList[0].size))+" MB. Please select a file that must not exceed "+theMB+ " MB. ";
            theModel.saveErrorLogs("CertificateUpload",theModel.uploadStatusMessage);
            Alert.show(theModel.uploadStatusMessage);
            isLargerFile = true;
            return;             
        }
        else
        {

            theModel.uploadStatusMessage = "";
            isLargerFile = false;
            theModel.saveErrorLogs("CertificateUpload","This is not a large file");
            //saveBtn.enabled = true;

        }

        //previewfileName=fileList[0].name;
        if(isUpload)
        {
            if(theModel.fileManagerVO!=null)
            {
                uploadFile("../../"+theModel.fileManagerVO.folderPath,null,null);
                theModel.saveErrorLogs("CertificateUpload","Upload file path : ../../"+theModel.fileManagerVO.folderPath);
            }
        }
    }

    public function uploadFile(path:String,theAdminItem:Object,saveDetObj:Object):void 
    {
        saveDet = saveDetObj;
        theAdminObj = theAdminItem;

        if(fileList!=null)
        {
            if(isLargerFile)
            {
                Alert.show(theModel.uploadStatusMessage);
                return;
            }
            theModel.deleteOldFile = false;
            if(theAdminItem!=null)
            {
                theModel.deleteOldFile = true;
                if(theAdminItem.url!=null)
                {
                    theModel.oldFileName = theAdminItem.url; 
                }
            }

            _winProgress = winProgress(PopUpManager.createPopUp(FlexGlobals.topLevelApplication as DisplayObject, winProgress, true));
            _winProgress.btnCancel.removeEventListener("click", onUploadCanceled);
            _winProgress.btnCancel.addEventListener("click", onUploadCanceled);
            //_winProgress.title = "Uploading file to " + domain;

            if(fileList!=null)
            {
                _winProgress.txtFile.text = fileList[0].name;
                file_name = fileList[0].name;
            }
            _winProgress.progBar.label = "0%";
            PopUpManager.centerPopUp(_winProgress);

            // Variables to send along with upload
            var sendVars:URLVariables = new URLVariables();
            sendVars.action = "upload";
            sendVars.path = path;

            var request:URLRequest = new URLRequest();
            request.data = sendVars;
            request.url = serverSideScript;
            request.method = URLRequestMethod.POST;
            fileReference = new FileReference();
            fileReference = FileReference(fileList[0]);
            fileReference.addEventListener(Event.OPEN, onUploadOpen);
            fileReference.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
            fileReference.addEventListener(Event.COMPLETE, onUploadComplete);
            fileReference.addEventListener(IOErrorEvent.IO_ERROR, onUploadIoError);
            fileReference.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadSecurityError);
            fileReference.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onUploadCompleteReturn);
            fileReference.upload(request);
        }
        else
        {
            //saveItem();
            theModel.deleteOldFile = false;
            submitData(saveDet,theAdminObj);

        }
    }
    private function onUploadOpen(evt:Event):void
    {
        _winProgress.uploadProgressMessage.text = "Uploading please wait..."
    }
    // Get upload progress
    private function onUploadProgress(event:ProgressEvent):void 
    {
        var numPerc:Number = Math.round((Number(event.bytesLoaded) / Number(event.bytesTotal)) * 100);
        _winProgress.progBar.setProgress(numPerc, 100);
        _winProgress.progBar.label = numPerc + "%";
        _winProgress.progBar.validateNow();
        if (numPerc > 90) 
        {
            _winProgress.btnCancel.enabled = false;
            //_winProgress.uploadProgressMessage.text = "Cropping your photo..Please wait..."
        } 
        else 
        {
            _winProgress.uploadProgressMessage.text = "Uploading please wait..."
            _winProgress.btnCancel.enabled = true;
        }
    }
    private function onUploadComplete(event:Event):void 
    {
        PopUpManager.removePopUp(_winProgress);
        _winProgress.uploadProgressMessage.text = "Please wait..."
        theModel.uploadStatusMessage="File have been uploaded.";
        theModel.saveErrorLogs("CertificateUpload",theModel.uploadStatusMessage);
        if(isUpload)
        {
            theModel.fileManagerVO.gatewayConnection.call( "data.files.getFiles", new Responder(theModel.fileManagerVO.onFileResult, theModel.fileManagerVO.onFault),theModel.fileManagerVO.folderPath);
        }
    }
    public function onUploadCompleteReturn(evt:DataEvent):void
    {
        if(evt!=null)
        {
            if(evt.data!=null)
            {
                try
                {
                    theModel.saveErrorLogs("CertificateUpload","came to onUploadCompleteReturn");
                    var rawData:String = evt.data as String;
                    var manager:Array  = JSON.decode(rawData);
                    if(manager!=null && manager[0]!=null)
                    {
                        var tempObj:Object = manager[0] as Object;
                        var status:Boolean = tempObj.theStatus as Boolean;
                        if(status)
                        {
                            if(tempObj.FileName!=null)
                            {
                                photoName = tempObj.FileName as String;
                            }
                            if(tempObj.theExtension!=null)
                            {
                                theExtension = tempObj.theExtension as String;
                            }
                            theModel.uploadStatusMessage="File have been uploaded.";
                            theModel.isPhotoUploaded = true;
                            if(!isUpload)
                            {
                                submitData(saveDet,theAdminObj);
                            }
                        }
                        else
                        {
                            photoName = "";
                            theModel.uploadStatusMessage="That file was not a recognised type or was unable to be decoded.";
                        } 
                    }
                    PopUpManager.removePopUp(_winProgress);

                }
                catch(e:Error)
                {
                    Alert.show("Error in uploading the file");
                }
            }
            else
            {
                Alert.show("Error in uploading the file");
            }
        }
    }
    private function onUploadIoError(event:IOErrorEvent):void 
    {
        theModel.uploadStatusMessage="IO Error in uploading file.";
        PopUpManager.removePopUp(_winProgress);
        theModel.saveErrorLogs("CertificateUpload",event.text);
        //Alert.show("IO Error in uploading file.", "Error");
    }
    // Called on upload security error
    private function onUploadSecurityError(event:SecurityErrorEvent):void 
    {
        theModel.uploadStatusMessage="Security Error in uploading file.";
        theModel.saveErrorLogs("CertificateUpload",theModel.uploadStatusMessage);
        //Alert.show("Security Error in uploading file.", "Error");
        PopUpManager.removePopUp(_winProgress);
        _winProgress == null;
        fileReference.cancel();
    }
    // Called on upload cancel
    private function onUploadCanceled(event:Event):void 
    {
        PopUpManager.removePopUp(_winProgress);
        theModel.uploadStatusMessage = "You have cancelled the operation";
        _winProgress == null;
        fileReference.cancel();
        //clearUpload();
    }

    private function submitData(theObj:Object,theAdminItem:Object):void
    {
        if(photoName!=null)
        {
            theObj["url"] = photoName;
        }
        else
        {
            theObj["url"] = theAdminItem.url;
        }
        if(theExtension!=null)
        {
            theObj["type"] = theExtension;
        }
        else
        {
            theObj["type"] = theAdminItem.audio_type;
        }

        theModel.updateCourseDetails(theObj,'image');
    }

}

}

The error

 [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2038"]

解决方案

Hey finally i got the solution. If any body facing like this problem please follow the some basic steps

Here the problem i faced is the file is uploading in IE(All version) but its not working in other browsers.

Then follow these steps

  • -- First try dispatching the HTTPStatusEvent

  • -- Check what error is coming. If the URL is valid it will not give error other wise it will show error responseURL=null

  • -- Then check your server side script path (what you are using to upload the file)

  • -- In my case i have passed the full URL for the file as a path not like (assets/.../fileuploader.php)

  • -- Then the error will be solved

You will find many solution on internet. But the most of the cases to check filereference.IOerrorevent & filereference.HTTPStatusEvent

Refer this link :
http://help.adobe.com//en_US/FlashPlatform/reference/actionscript/3/flashnet/FileReference.html#includeExamplesSummary

这篇关于&QUOT;错误#2038&QUOT; :当文件上传的柔性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆