做项目的时候由于插件Phaser请求audio的时候,不允许跨域,具体提示====》
已拦截跨源请求:同源策略禁止读取位于 http://ttyouni.com/1.mp3 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。
幸亏只是音乐,要是图片也不允许跨域,就麻烦了。因为以前一直使用图片上传,所以代码也是参照着那里写的,结果,拿到的文件一直是损坏的。
其中看到stream的Length的显示是出现异常,虽然知道是因为网络数据流读取的问题,但是怎么写还是不清楚。
C++的buffer写法倒是会,但是C#的一直没写过。网上搜,关键词一直不对,搜了老久的c#网络请求数据流接收,没有一个有用。
哦,后来搜到个streamreader,可惜人家写的接收类型是string...还是╮(╯﹏╰)╭不会。最后,还是老大出马,拿了个网上的参考地址。
最后才写好的,总觉得一把辛酸泪。

参考的地址:http://www.jb51.net/article/57068.htm

 public string CopyFileByUrl(string url)
{
string name = url.Substring(url.LastIndexOf('/') + );//获取名字
string fileFolder = UploadConfigContext.UploadPath;
string filePath = Path.Combine(fileFolder, name);//存放地址就是本地的upload下的同名的文件
if (!Directory.Exists(fileFolder))
Directory.CreateDirectory(fileFolder); string returnPath = GetSimplePath(filePath);//需要返回的路径
if (File.Exists(filePath))
{//如果已经存在,那么就不需要拷贝了,如果没有,那么就进行拷贝
return returnPath;
}
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.ProtocolVersion = new Version(, );
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.NotFound)
{
return string.Empty;//找不到则直接返回null
}
// 转换为byte类型
System.IO.Stream stream = response.GetResponseStream(); //创建本地文件写入流
Stream fs = new FileStream(filePath, FileMode.Create);
byte[] bArr = new byte[];
int size = stream.Read(bArr, , (int)bArr.Length);
while (size > )
{
fs.Write(bArr, , size);
size = stream.Read(bArr, , (int)bArr.Length);
}
fs.Close();
stream.Close();
return returnPath;
}

Copy代码

        public string GetSimplePath(string path)
{
//E:\Upload\cms\day_150813\1.jpg
path = path.Replace(@"\", "/");
int pos = path.IndexOf("Upload");
if (pos != -1)
{
pos = pos - 1;//拿到前面那个/,这样为绝对路径,直接保存在整个项目下的upload文件夹下
return path.Substring(pos, path.Length - pos);
}
return "";
}

最新文章

  1. FFMpeg video duration
  2. javascript基础03
  3. 网上下载的CHM帮助文件打不开的解决办法。
  4. linux下遍历目录(转-在于思考)
  5. 手动书写小代码-foreach实现机制
  6. Spring EL method invocation example
  7. [前端JS学习笔记]JavaScript CallBack
  8. Python入门 学习笔记 (二)
  9. 就是一段程序,可以求出N个不等长列表中取N个元素形成的所有组合
  10. HDU 4940(杭电更多的学校#7 1006) Destroy Transportation system(到处乱混)
  11. Spring加载properties文件的属性的值
  12. exports
  13. 一文看懂https如何保证数据传输的安全性的
  14. python高级-面向对象(11)
  15. HDU 1021 斐波那契
  16. 二十、Flyweight 享元模式
  17. 【repost】前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
  18. FineReport单行与数据库交互的方法
  19. TypeError: web3.eth.Contract is not a constructor错误解决
  20. python3 中对arrow库的总结(转发)

热门文章

  1. C++多线程中调用python api函数
  2. Java如何创建用户自定义异常?
  3. Eclispe IDE集成Maven
  4. 模式识别之bpnn---神经网络训练
  5. (转)解决Win7/8硬盘占用高方案汇总
  6. Idea配置CheckStyle
  7. 如何解析本地和线上XML文件获取相应的内容
  8. DIV背景图片定位问题
  9. LR进行接口测试
  10. javascript报错集锦