美文网首页
unity 下载 文件保存到本地

unity 下载 文件保存到本地

作者: 流光念岁月 | 来源:发表于2017-11-26 18:17 被阅读0次

    1.打开对话框 要引用 System.Windows.Forms 注意 区分32 和64位2. System.Windows.Forms 放在Plugins文件夹下,同时需要更改.net 2.0 Subset为.net2.0 

    代码 :


    using System;

    using System.Collections;

    using System.Collections.Generic;

    using System.Diagnostics;

    using System.IO;

    using System.Net;

    using System.Windows.Forms;

    using UnityEngine;

    using UnityEngine.Networking;

    public class DownloadFile : MonoBehaviour {

        // Use this for initialization

        void Start()

        {

        }

        IEnumerator GetPicData()

        {

            using (WWW www = new WWW("http://192.168.137.1:8001/pic/n.jpg"))

            {

                yield return www;

    //获取下载的文件名

    string fileinfo=www.responseHeaders["Content-Disposition"];

    string key="filename=";

    string fileName=fileinfo.Substring(fileinfo.LastIndexOf(key).Replace(key,""));

                Stream inStream = new MemoryStream(www.bytes);//获取http

                FileTool.SaveFileInfo saveFileInfo = new FileTool.SaveFileInfo();

                saveFileInfo.inStream = inStream;

                saveFileInfo.fileName =fileName;

                saveFileInfo.fileTittle = "保存图片";

                saveFileInfo.fileFilter = FileTool.FileFilter.pic;

                FileTool.OpenDialog(saveFileInfo);

            }

        }

        IEnumerator GetExcelData()

        {

            using (WWW www = new WWW("http://192.168.137.1:8001/excel/new.xls"))

            {

                yield return www;         

    //获取下载的文件名

    string fileinfo=www.responseHeaders["Content-Disposition"];

    string key="filename=";

    string fileName=fileinfo.Substring(fileinfo.LastIndexOf(key).Replace(key,""));

                Stream inStream = new MemoryStream(www.bytes);//获取http

                FileTool.SaveFileInfo saveFileInfo = new FileTool.SaveFileInfo();

                saveFileInfo.inStream = inStream;

                saveFileInfo.fileName = fileName;

                saveFileInfo.fileTittle = "保存文件";

                saveFileInfo.fileFilter = FileTool.FileFilter.excel;

                FileTool.OpenDialog(saveFileInfo);

            }

        }

        // Update is called once per frame

        void Update () {

    if (Input.GetKeyUp(KeyCode.B))

    {

                StartCoroutine(GetExcelData());

            }

            if (Input.GetKeyUp(KeyCode.C))

            {

                StartCoroutine(GetPicData());

            }

        }

    }


    using System.Collections;

    using System.Collections.Generic;

    using System.Diagnostics;

    using System.IO;

    using System.Windows.Forms;

    using UnityEngine;

    public class FileTool

    {

        public static void OpenDialog(SaveFileInfo saveFileInfo)

        {

            using (SaveFileDialog saveFile = new SaveFileDialog())

            {

                saveFile.FileName = saveFileInfo.fileName;

                saveFile.Title = saveFileInfo.fileTittle;

                saveFile.Filter = saveFileInfo.fileFilter;

                saveFile.InitialDirectory = saveFileInfo.fileInitialDirectory;

                if (saveFile.ShowDialog() == DialogResult.OK)

                {

                    using (Stream s = saveFile.OpenFile())

                    {

                        WriteFile(saveFileInfo.inStream, s);

                    }

                    string Savepath = Path.GetDirectoryName(saveFile.FileName);

                    Process.Start(Savepath);

                }

            }

        }

        /// <summary>

        /// 将二进制写入文件

        /// </summary>

        /// <param name="inStream">输入流</param>

        /// <param name="outStream">输出流</param>

        public static void WriteFile(Stream inStream, Stream outStream)

        {

            byte[] b = new byte[1024];

            int readCount = inStream.Read(b, 0, b.Length);//读流

            while (readCount > 0)

            {

                outStream.Write(b, 0, readCount);//写流

                readCount = inStream.Read(b, 0, b.Length);//再读流

            }

            outStream.Close();

            inStream.Close();

        }

        /// <summary>

        /// 打开对话框 保存文件 所填写的信息

        /// </summary>

        public class SaveFileInfo

        {

            /// <summary>

            /// 需要保存的文件名

            /// </summary>

            public string fileName;

            /// <summary>

            /// 对话框标题

            /// </summary>

            public string fileTittle;

            /// <summary>

            /// 文件过滤器 例如: “标签1|*.jpg|标签2|.png|标签3|.gif”

            /// </summary>

            public string fileFilter;

            /// <summary>

            /// 需要保存文件初始化的目录

            /// </summary>

            public string fileInitialDirectory;

            /// <summary>

            /// 获取的文件二进制流

            /// </summary>

            public Stream inStream;

        }

        public class FileFilter

        {

            /// <summary>

            /// 图片过滤器

            /// </summary>

            public const string pic = "图片|*.jpg;*.png;*.gif;*.jpeg;*.bmp,";

            /// <summary>

            /// Excel过滤器

            /// </summary>

            public const string excel = "Excel files(*.xls)|*.xls|All files(*.*)|*.*";

            /// <summary>

            /// 音频 过滤器

            /// </summary>

            public const string audio = "音频文|*.mp3;*.wma;*.aac;*.midi;*.wav;*.aaa;*.bbb;*.ccc";

        }

    }

    demo下载地址

    相关文章

      网友评论

          本文标题:unity 下载 文件保存到本地

          本文链接:https://www.haomeiwen.com/subject/qlflbxtx.html