从IIS网站上下载AssetBundle,并写入到本地磁盘指定路径

news/2024/5/14 12:56:57/文章来源:https://blog.csdn.net/weixin_34082789/article/details/92359967

啊,长叹一声,弄了一晚上,加半个白天

先说说历程吧,主要是踩的坑。

首先打包就不用说了。有.asseetbundle的,有.u3d的,还有就是生成md5列表

然后下载并保存就恶心了。

本来想的很好,思路其实也正确。

AssetBundle生成到StreamingAssets文件夹下
我在本机上(win10x64),IIS开了个站,开了FTP,用FileZilla把StreamingAssets文件夹上传到站上。
这样这些AssetBundle就有了url:“http://localhost:9999/StreamingAssets/a.assetbundle”

上传后,把本地的StreamingAssets文件夹删掉,程序中判断如果没有这个文件夹,则创建,下载md5列表文件,按文件中列出的文件列表把远程服务器上的所有assetbundle下载到本地来。这个过程的代码就不说了,不复杂,执行的也很顺利。主要是从下面开始坑了。

用WWW,从远程url地址下载,再用二进制写入本地路径文件

string localFilePath = "...";         //要保存到本地的文件全路径
string savePath = "...";               //文件存储的文件夹
string url = "http://...";                  //要下载的远程文件地址//判断一下文件要存储的文件夹是否存在,不存在则创建
if(!Directory.Exists(savePath))
{Directory.CreateDirectory(savePath);
}//下载
using(WWW www = new WWW(url))
{yield return www;if(www.error == null && www.isDone){//写入本地文件File.WriteAllBytes(localFilePath, www.bytes);}
}

好的,到此为止,没有任何错误,StreamingAssets文件夹里的所有东东都下载到本地了,看文件大小好像也没有问题。

既然下载下来了,就得用啊,还是用WWW吧

string localFilePath="file:///..";             //本地要加载的AssetBundle文件路径
using(WWW www = new WWW(localFilePath))
{yield return www;if(www.error ==null && www.isDone){AssetBundle ab = www.assetBundle;GameObject go = ab.LoadAsset<GameObject>("go");}
}

就在这一步

AssetBundle ab = www.assetBundle;

报错了:
Failed to decompress data for the AssetBundle 'Memory'`

但是请注意,用new WWW(localFilePath) 加载是没有任何问题的。

百撕不得其姐,于是搜索引擎查呗

一种说法是FileZilla向网站上传时要设置二进制

从IIS网站上下载AssetBundle,并写入到本地磁盘指定路径

好吧,设置了,删掉重新上传,还是这样

于是把上传的文件直接拷贝过来,而不是在程序中用WWW下载,可以用,加载包没有问题

这就不好玩了,但是能确定的是问题是出在从远程下载并保存到本地这个步骤

那就换一种下载方法

用UnityWebRequest

using (UnityWebRequest req = UnityWebRequest.Get(fileUrl)){string filePath = "...";string savePath = "...";if (!Directory.Exists(savePath)){Directory.CreateDirectory(savePath);}yield return req.SendWebRequest();if (req.isNetworkError || req.isHttpError){Debug.LogError(req.downloadHandler.text);}else{File.WriteAllBytes(filePath, req.downloadHandler.data);Debug.Log(fileUrl + " downloaded");}}

这回更有趣,只下载了.manifest文件,而assetbundle还有.u3d这些包没有下载

看了一下,报的错是404 File Not Found

底下还提到了MIME映射

度娘查了一下,终于发现了真正的问题。

程序是没问题的,思路是正确的,问题出在了IIS的设置上

具体的说就是MIME的设置

即IIS中需要对不同的文件类型进行MIME映射才能使其类型的文件能在网站端正常的被读取下载,大概是这个意思。那就设置吧

win+R

输入compmgmt.msc回车

从IIS网站上下载AssetBundle,并写入到本地磁盘指定路径

从IIS网站上下载AssetBundle,并写入到本地磁盘指定路径

点击‘添加’

从IIS网站上下载AssetBundle,并写入到本地磁盘指定路径

如上图
扩展名把你打包的扩展名填进去,如我是用的assetbundle和u3d
MIME类型中填写:application/octet-stream

好了,重启一下网站,再运行,OK了,正常下载和加载,出了一个小问题
就是文件夹下名为StreamingAssets的文件,即与文件夹同名,无扩展名的文件无法下载

再查一下

还是要设置MIME,无扩展名怎么办

还是上图,在文件扩展名一栏中填一个点"."
MIME一栏还是填:application/octet-stream

OK了

至于manifest文件,本身就在IIS的默认设置里有

也就是说,用IIS,一定要把你打包的assetbundle文件扩展类型设置MIME,比如你打的包是xxx.ab,那ab就要像这样设置MIME映射

再回过头来,还把UnityWebRequest换回WWW的加载方式,也OK了

即 ,此次问题就是出在IIS的设置上,思路和程序没有问题。

总结:

  1. 上传时用二制方式上传,因为都是二进制文件
  2. IIS的MIME设置要搞好

问题解决,大满足

转载于:https://blog.51cto.com/shuxiayeshou/2130970

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_720491.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里

我们在用ABAP代码消费外网的url时会遇到一些异常&#xff0c;比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED&#xff0c;这是因为请求的url所在的网站的SSL Server certificate没有导入到Netweaver系统。 本文介绍导入的详细步骤。 基本思路就是两步&#xff1a; 从网站上导出certi…

用java做网站,java连接数据库并查询输出到页面

java web的后缀名是jsp&#xff0c;所以咱们要有一个jsp的开发环境&#xff0c;我这用的是jspStudy 自行百度。这软件是一个集成开发环境&#xff0c;安装启动后即可使用&#xff0c;集成了tomcat和mysql数据库 首先我们先新建一个首页文件 index.jsp <% page language"…

关于安卓手机访问一些网站或者Fiori应用弹出安装证书的提示

有朋友问遇到在安卓手机上安装Fiori Client&#xff0c;打开的时候提示需要安装证书&#xff0c;如下图所示&#xff1a; 我在自己的Android手机试了试&#xff0c;因为我没有装Fiori Client&#xff0c;所以就用手机浏览器直接访问 https://go.sap.com : 弹出了类似的对话…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

推荐一个采用方便程序员在线动画学习常用算法的良心网站

网址&#xff1a; https://algorithm-visualizer.org/ 进去之后的页面是程序员熟悉的码农风格&#xff1a; 假设我想学习冒泡排序算法&#xff0c;在搜索栏里输入sort&#xff0c;在结果列表里选择bubble sort&#xff1a; 点击之后&#xff0c;排序操作处于就绪状态&…

以太坊Dapp项目-拍卖网站-智能合约编写测试

修订日期姓名邮箱2018-10-18brucefengbrucefengbrucefeng.com前言 写这篇文章的初衷其实很简单&#xff0c;在MyEtherWallet上申请以太坊ENS的时候&#xff0c;竞标的以太币两次被吞&#xff0c;而且是在规定时间点进行了价格公告&#xff0c;这篇文章的设计思路其实就是跟ENS的…

网站开发需要哪些技术_自己建网站要掌握哪些技术-广州福星网站建设

自助建站最大的好处&#xff0c;可以不用找人或花高价找建站公司来建站&#xff0c;但自己建站却存在一定技术门槛&#xff0c;而且这个技术门槛非常的高&#xff0c;主要因为建站并不是说&#xff0c;通过一门技术就可以搞定&#xff0c;做网站所需要技术分为三大块&#xff0…

电商网站模板_4个步骤,教你这样制作跨境电商网站

随着全球互联网经济的发展&#xff0c;外贸从业者也需要好好利用互联网来开展业务了。而制作一个自己的跨境电商网站&#xff0c;就是比较好的营销卖货方式。不过大部分人都不知道该如何制作&#xff0c;所以接下来就跟大家科普下跨境电商网站制作教程&#xff1a;Step1&#x…

制作服务器配置,制作视频网站怎么配置服务器

一个视频网站&#xff0c;它所需的流量远远大于普通网站。它对于服务器的要求也是更高。对于制作视频网站&#xff0c;服务器硬件一个最好是8核 cpu &#xff0c; 最低16G内存建议32G内存&#xff0c;两个以上的100M网卡&#xff0c;系统可以选择windows也可以选择linux。假如你…

类似tom网站给系统换肤的实现方法。

首先&#xff0c;换肤设计要保证皮肤更改的信息能够存在cookie里&#xff0c;使得用户下次访问的时候还能够看到自己上次的设置。这里换肤我们用到的是通过js调用不同的样式。然而在我们正在做的系统中&#xff0c;我们用到了IFRAME&#xff0c;要保证整体页面的一致&#xff0…

MySQL就事器知名网站中的运用量

2008 年4月18日&#xff0c;在Alexa安插的一次“Scaling MySQL -- Up or Out?” 的小组申辩中&#xff0c;MySQL、Sun、Flickr、Fotolog、Wkipedia、Facebook、YouTube等国际知名网站的DBA们&#xff0c;对其网站MySQL数据库就事器、Web就事器、缓存就事器的数目&#xff0c;M…

网站安全漏洞--大全

原文网址&#xff1a;网站安全漏洞--大全_IT利刃出鞘的博客-CSDN博客 简介 本文介绍网站常见的一些安全漏洞&#xff0c;包括&#xff1a;SQL 注入、越权操作、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、DDoS 攻击、JSON 劫持、暴力破解、HTTP 报头追踪漏洞、信息泄露、文件上传…

[存底]加速,加速,再加速:来自Google的网站加速技巧大全

原文&#xff1a;http://developer.51cto.com/art/200906/132210.htm 困扰许多网站所有者很久的一个问题是网站访问速度总是那么慢。想购买独立带宽&#xff0c;预算不允许&#xff0c;想购买CDN加速&#xff0c;价格又太贵。那有没有经济实惠的解决办法呢&#xff1f;从目前的…

python人工智能_Python爬虫学习教程 bilibili网站视频爬取!【附源码】

Python爬虫学习教程&#xff0c;万物皆可爬&#xff01;每个技术大牛都是从基础慢慢的提升上去的&#xff0c;基础知识越深以后的发展越牛&#xff01;学好python&#xff0c;才能玩转python&#xff0c;那到底怎么才能学好python&#xff1f;通过爬取b站案例带领你快速掌握爬虫…

ASP.NET : 如何为网站添加自定义的文件类型

我们知道&#xff0c;在ASP.NET网站中&#xff0c;默认页面的扩展名是aspx.要想实现在网站中提供特殊的文件类型&#xff0c;例如Test之类的,就可以考虑通过HttpHandler来实现。下面是一个小的例子 1. HttpHandlerusing System; using System.Collections.Generic; using Syste…

aspnetcore upload form提交_第八:网站网址提交给搜索引擎

第八&#xff1a;网站网址提交给搜索引擎网站更新了文章&#xff0c;如果你想搜索引擎快速收录网页&#xff01;把网址提交给搜索引擎&#xff0c;是一种辅助网页收录的技巧。会围绕着搜索引擎提交这个话题&#xff0c;一一的介绍网址提交的方法。★ 网址提交方式以百度为例&am…

网站用户登录验证:Servlet+JSP VS Struts书剑恩仇录

? 什么是Struts框架 –从不同的角度看待Struts框架 –Struts框架的优点 ? 下载安装Struts框架 –下载配置Struts框架 –测试Struts框架 –安装Struts应用程序 –访问Struts文档 ? Struts 中常用组件 –ActionServlet –Action –ActionForm –ActionMapping –ActionForward…

网站防御DDoS的方案--高防节点(高防IP)

原文网址&#xff1a;网站防御DDoS的方案--高防节点(高防IP)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用高防节点防御DDoS攻击。 本文包含的内容有&#xff1a;DDos的概念&#xff0c;高防节点的防御原理&#xff0c;提供高防节点的一些厂家&#xff0c;高防节点的配置…

linux 部署asp网站,Linux Ubuntu下部署Asp.net Core Web

Linux Ubuntu下部署Asp.net Core WebLinux Ubuntu下部署Asp.net Core Web使用的是Ubuntu14.04版本&#xff0c;.Net Core 版本2.1打开终端并运行以下命令&#xff1a;wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb -O packages-mic…

UX Pin - 一款在线界面设计网站

UXPorn首页上以Pinterest的风格聚合了很多优秀的UI设计&#xff0c;除了供大家参考学习外&#xff0c;也可以在UXPIN App中直接使用。 进入UXPIN App, 可以拖动各种元素到canvas上&#xff0c;添加用户交互事件&#xff0c;并支持自定义component, version control, team colla…