栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

unity 接入 阿里 ossclient sdk

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity 接入 阿里 ossclient sdk

1、导入DLL 会有平台不兼容的问题,这里导出SDK源代码。

2、导入aliyun_oss_dotnet_sdk_2_8_0src 内代码 放入unity 工程。

3、会报 HttpUtils 里面的一个异常错误

var mimeLines = Properties.Resources.MimeData.ToString().Split('n');//异常产生处

原因是这个 MimeData 无法通过ResourceManager.GetString 获取。

源代码

     //internal static string MimeData {
        //    get {
        //        return ResourceManager.GetString("MimeData", resourceCulture);
        //    }
        //}

修改为

internal static readonly string MimeData =
           "xlsx    application/vnd.openxmlformats-officedocument.spreadsheetml.sheetn" +
           "xltx    application/vnd.openxmlformats-officedocument.spreadsheetml.templaten" +
           "potx    application/vnd.openxmlformats-officedocument.presentationml.templaten" +
           "ppsx    application/vnd.openxmlformats-officedocument.presentationml.slideshown" +
           "pptx    application/vnd.openxmlformats-officedocument.presentationml.presentationn" +
           "sldx    application/vnd.openxmlformats-officedocument.presentationml.sliden" +
           "docx    application/vnd.openxmlformats-officedocument.wordprocessingml.documentn" +
           "dotx    application/vnd.openxmlformats-officedocument.wordprocessingml.templaten" +
           "xlam    application/vnd.ms-excel.addin.macroEnabled.12n" +
           "xlsb    application/vnd.ms-excel.sheet.binary.macroEnabled.12n" +
           "apkttapplication/vnd.android.package-archiven" +
           "hqxttapplication/mac-binhex40n" +
           "cptttapplication/mac-compactpron" +
           "docttapplication/mswordn" +
           "oggttapplication/oggn" +
           "pdfttapplication/pdfn" +
           "rtftttext/rtfn" +
           "mifttapplication/vnd.mifn" +
           "xlsttapplication/vnd.ms-exceln" +
           "pptttapplication/vnd.ms-powerpointn" +
           "odcttapplication/vnd.oasis.opendocument.chartn" +
           "odbttapplication/vnd.oasis.opendocument.databasen" +
           "odfttapplication/vnd.oasis.opendocument.formulan" +
           "odgttapplication/vnd.oasis.opendocument.graphicsn" +
           "otgttapplication/vnd.oasis.opendocument.graphics-templaten" +
           "odittapplication/vnd.oasis.opendocument.imagen" +
           "odpttapplication/vnd.oasis.opendocument.presentationn" +
           "otpttapplication/vnd.oasis.opendocument.presentation-templaten" +
           "odsttapplication/vnd.oasis.opendocument.spreadsheetn" +
           "otsttapplication/vnd.oasis.opendocument.spreadsheet-templaten" +
           "odtttapplication/vnd.oasis.opendocument.textn" +
           "odmttapplication/vnd.oasis.opendocument.text-mastern" +
           "ottttapplication/vnd.oasis.opendocument.text-templaten" +
           "othttapplication/vnd.oasis.opendocument.text-webn" +
           "sxwttapplication/vnd.sun.xml.writern" +
           "stwttapplication/vnd.sun.xml.writer.templaten" +
           "sxcttapplication/vnd.sun.xml.calcn" +
           "stcttapplication/vnd.sun.xml.calc.templaten" +
           "sxdttapplication/vnd.sun.xml.drawn" +
           "stdttapplication/vnd.sun.xml.draw.templaten" +
           "sxittapplication/vnd.sun.xml.impressn" +
           "stittapplication/vnd.sun.xml.impress.templaten" +
           "sxgttapplication/vnd.sun.xml.writer.globaln" +
           "sxmttapplication/vnd.sun.xml.mathn" +
           "sisttapplication/vnd.symbian.installn" +
           "wbxmltapplication/vnd.wap.wbxmln" +
           "wmlctapplication/vnd.wap.wmlcn" +
           "wmlsctapplication/vnd.wap.wmlscriptcn" +
           "bcpiotapplication/x-bcpion" +
           "torrenttapplication/x-bittorrentn" +
           "bz2ttapplication/x-bzip2n" +
           "vcdttapplication/x-cdlinkn" +
           "pgnttapplication/x-chess-pgnn" +
           "cpio    application/x-cpion" +
           "cshttapplication/x-cshn" +
           "dvittapplication/x-dvin" +
           "splttapplication/x-futuresplashn" +
           "gtar    application/x-gtarn" +
           "hdfttapplication/x-hdfn" +
           "jarttapplication/x-java-archiven" +
           "jnlp    application/x-java-jnlp-filen" +
           "jsttapplication/x-javascriptn" +
           "kspttapplication/x-kspreadn" +
           "chrt    application/x-kchartn" +
           "kilttapplication/x-killustratorn" +
           "latextapplication/x-latexn" +
           "rpmttapplication/x-rpmn" +
           "shttapplication/x-shn" +
           "shar    application/x-sharn" +
           "swfttapplication/x-shockwave-flashn" +
           "sitttapplication/x-stuffitn" +
           "sv4cpiotapplication/x-sv4cpion" +
           "sv4crctapplication/x-sv4crcn" +
           "tarttapplication/x-tarn" +
           "tclttapplication/x-tcln" +
           "texttapplication/x-texn" +
           "manttapplication/x-troff-mann" +
           "mettapplication/x-troff-men" +
           "msttapplication/x-troff-msn" +
           "ustartapplication/x-ustarn" +
           "srcttapplication/x-wais-sourcen" +
           "zipttapplication/zipn" +
           "m3uttaudio/x-mpegurln" +
           "rattaudio/x-pn-realaudion" +
           "wavttaudio/x-wavn" +
           "wmattaudio/x-ms-wman" +
           "waxttaudio/x-ms-waxn" +
           "pdbttchemical/x-pdbn" +
           "xyzt    chemical/x-xyzn" +
           "bmpt    image/bmpn" +
           "gittimage/gifn" +
           "iefttimage/iefn" +
           "pngt    image/pngn" +
           "wbmp    image/vnd.wap.wbmpn" +
           "rast    image/x-cmu-rastern" +
           "pnmt    image/x-portable-anymapn" +
           "pbmt    image/x-portable-bitmapn" +
           "pgmt    image/x-portable-graymapn" +
           "ppmt    image/x-portable-pixmapn" +
           "rgbt    image/x-rgbn" +
           "xbmt    image/x-xbitmapn" +
           "xpmttimage/x-xpixmapn" +
           "xwdt    image/x-xwindowdumpn" +
           "csst    text/cssn" +
           "rtxt    text/richtextn" +
           "tsvt    text/tab-separated-valuesn" +
           "jadt    text/vnd.sun.j2me.app-descriptorn" +
           "wmlt    text/vnd.wap.wmln" +
           "wmlsttext/vnd.wap.wmlscriptn" +
           "etxt    text/x-setextn" +
           "mxut    video/vnd.mpegurln" +
           "flvt    video/x-flvn" +
           "wmt    video/x-ms-wmn" +
           "wmvt    video/x-ms-wmvn" +
           "wmxt    video/x-ms-wmxn" +
           "wvxt    video/x-ms-wvxn" +
           "avit    video/x-msvideon" +
           "movietvideo/x-sgi-movien" +
           "icettx-conference/x-cooltalkn" +
           "3gpt    video/3gppn" +
           "ait    application/postscriptn" +
           "aift    audio/x-aiffn" +
           "aifc    audio/x-aiffn" +
           "aiff    audio/x-aiffn" +
           "asct    text/plainn" +
           "atom    application/atom+xmln" +
           "aut    audio/basicn" +
           "binttapplication/octet-streamn" +
           "cdf     application/x-netcdfn" +
           "cgm     image/cgmn" +
           "class   application/octet-streamn" +
           "dcr     application/x-directorn" +
           "dif     video/x-dvn" +
           "dir     application/x-directorn" +
           "djv     image/vnd.djvun" +
           "djvu    image/vnd.djvun" +
           "dll     application/octet-streamn" +
           "dmg     application/octet-streamn" +
           "dms     application/octet-streamn" +
           "dtd     application/xml-dtdn" +
           "dv      video/x-dvn" +
           "dxr     application/x-directorn" +
           "eps     application/postscriptn" +
           "exe     application/octet-streamn" +
           "ez      application/andrew-insetn" +
           "gram    application/srgsn" +
           "grxml   application/srgs+xmln" +
           "gz      application/x-gzipn" +
           "htm     text/htmln" +
           "html    text/htmln" +
           "ico     image/x-iconn" +
           "ics     text/calendarn" +
           "ifb     text/calendarn" +
           "iges    model/igesn" +
           "igs     model/igesn" +
           "jp2     image/jp2n" +
           "jpe     image/jpegn" +
           "jpeg    image/jpegn" +
           "jpg     image/jpegn" +
           "kar     audio/midin" +
           "lha     application/octet-streamn" +
           "lzh     application/octet-streamn" +
           "m4a     audio/mp4a-latmn" +
           "m4p     audio/mp4a-latmn" +
           "m4u     video/vnd.mpegurln" +
           "m4v     video/x-m4vn" +
           "mac     image/x-macpaintn" +
           "mathml  application/mathml+xmln" +
           "mesh    model/meshn" +
           "mid     audio/midin" +
           "midi    audio/midin" +
           "mov     video/quicktimen" +
           "mp2     audio/mpegn" +
           "mp3     audio/mpegn" +
           "mp4     video/mp4n" +
           "mpe     video/mpegn" +
           "mpeg    video/mpegn" +
           "mpg     video/mpegn" +
           "mpga    audio/mpegn" +
           "msh     model/meshn" +
           "nc      application/x-netcdfn" +
           "oda     application/odan" +
           "ogv     video/ogvn" +
           "pct     image/pictn" +
           "pic     image/pictn" +
           "pict    image/pictn" +
           "pnt     image/x-macpaintn" +
           "pntg    image/x-macpaintn" +
           "ps      application/postscriptn" +
           "qt      video/quicktimen" +
           "qti     image/x-quicktimen" +
           "qtif    image/x-quicktimen" +
           "ram     audio/x-pn-realaudion" +
           "rdf     application/rdf+xmln" +
           "rm      application/vnd.rn-realmedian" +
           "roff    application/x-troffn" +
           "sgm     text/sgmln" +
           "sgml    text/sgmln" +
           "silo    model/meshn" +
           "skd     application/x-koann" +
           "skm     application/x-koann" +
           "skp     application/x-koann" +
           "skt     application/x-koann" +
           "smi     application/smiln" +
           "smil    application/smiln" +
           "snd     audio/basicn" +
           "so      application/octet-streamn" +
           "svg     image/svg+xmln" +
           "t       application/x-troffn" +
           "texi    application/x-texinfon" +
           "texinfo pplication/x-texinfon" +
           "tif     image/tiffn" +
           "tiff    image/tiffn" +
           "tr      application/x-troffn" +
           "txt     text/plainn" +
           "vrml    model/vrmln" +
           "vxml    application/voicexml+xmln" +
           "webm    video/webmn" +
           "wrl     model/vrmln" +
           "xht     application/xhtml+xmln" +
           "xhtml   application/xhtml+xmln" +
           "xml     application/xmln" +
           "xsl     application/xmln" +
           "xslt    application/xslt+xmln" +
           "xul     application/vnd.mozilla.xul+xmln" +
           "webp    image/webpn";

这样就可以正常使用SDK 功能了。

4、_addInternalMethod这个引用永远为空,原因就是.net40里WebHeaderCollection这里根本没有AddInternal这个函数,

  //var internalMethodName = (_isMonoPlatform == true) ? "AddWithoutValidate" : "AddInternal";

全部使用  AddWithoutValidate

5、Unity Webgl 无法正常下载ossclient 文件。

修改为url 去下载。

public void DownLoadFile(string _strFile, string _strFilePath,Action callback)
        {
            this.fileName = _strFile;
            this.filePath = _strFilePath;
            Debug.Log("DownLoadFile=============="); 

                var client = new OssClient(Config.EndPoint, Config.AccessKeyId,                                                                         Config.AccessKeySecret);
            try
            {
                Debug.Log("DownLoadFile  _strFile========" + _strFile);
                Debug.Log("DownLoadFile  _strFilePath===========" + _strFilePath);
                var req = new GeneratePresignedUriRequest(Config.Bucket, _strFile,                                                                                                         SignHttpMethod.Get);
                var uri = client.GeneratePresignedUri(req);
                Debug.Log("uri======" + uri.OriginalString);
                StartCoroutine(DownUrl(uri.OriginalString, _strFilePath, (succ) =>{
                    callback?.Invoke(succ);
                }));
            }
            catch (OssException ex)
            {
                Debug.Log("Failed with error code:"+ ex.ErrorCode + "; Error info: "+ ex.Message + ".RequestID: HostID:"+ ex.HostId.ToString());
            }
            catch (Exception ex)
            {
                Debug.Log("Failed with error info:"+ ex.Message);
            }

}

        IEnumerator DownUrl(string downloadingUrl,string _strFilePath, Action callback)
        {
            //发送请求
            UnityWebRequest webRequest = UnityWebRequest.Get(downloadingUrl);
            yield return webRequest.SendWebRequest();

            if (webRequest.isHttpError || webRequest.isNetworkError)
            {
                Debug.Log("Download Error:" + webRequest.error);
                callback?.Invoke(false);
            }
            else
            {
                Debug.Log("DownUrl==============");
                //获取二进制数据
                var _Filedata = webRequest.downloadHandler.data;
                using (var file = File.Open(_strFilePath, FileMode.OpenOrCreate))
                {
                    int length = (int)_Filedata.Length;
                    file.Write(_Filedata, 0, length);
                }
                callback?.Invoke(true);
            }
        }

6、Unity Webgl 上传文件问题。

 ossclient 上传文件

ossClient.PutObject(signedUrl, stream); 会因为缺少webgl 库 上传失效。

  var generatePresignedUriRequest = new GeneratePresignedUriRequest(Config.Bucket, _strFile, SignHttpMethod.Put);
                var signedUrl = ossClient.GeneratePresignedUri(generatePresignedUriRequest);
                // 使用签名URL上传文件。
                StartCoroutine(UpLoadPut(signedUrl, bytes, _strFile));

用 UnityWebRequset 会出403 签名不匹配的错误。这里用BestHttp 插件 实现现下面的方法。就可以正常上传连接 文件和数据了。

        IEnumerator UpLoadPut(Uri url, string data,string fileName)
        {
            var request = new HTTPRequest(url,HTTPMethods.Put,(op1,op2)=>{
                Debug.Log("HTTPRequest: ===========" );
            });
            byte[] bytes = Encoding.UTF8.GetBytes(data);
            request.RawData = bytes;
            request.Send();
            yield return null;
        }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号