微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unity3D 上传日志

上传日志到服务器,需要先将日志进行压缩,首先下载压缩库Ionic.Zip.dll

Ionic.Zip.dll下载:http://yunpan.cn/cj7U6E4RrRh6m  访问密码 b6df

丢到工程的Assets\Plugins目录下

然后

using Ionic.Zip;

接着就可以使用啦

上传文件需要用到WWW,所以要使用协程,所以要继承MonoBehavIoUr,或者继承MonoBehavIoUr的子类

using Ionic.Zip;
using System.IO;
using UnityEngine;

public class UploadFile:MonoBehavIoUr
{
    protected override void Start()
    {
        string filePath="d:/test/test.text";
        string savePath="d:/test/test.zip";
        #if !UNITY_EDITOR
        filePath = "mnt/sdcard/output_log.txt";
        savePath = "mnt/sdcard/output_log.zip";
        #endif
        try
        {
            if(File.Exists(filePath))
            {
                using(ZipFile zip = new ZipFile())
                {
                    ZipEntry e = zip.AddFile(filePath,"");
                    zip.Save(savePath);
                }


                using(FileStream fs = File.OpenRead(savePath))
                {
                    long i=0;
                    long length = fs.Length;
                    byte[] data = new byte[length];
                    long offset = data.Length>1024?1024:data.Length;


                    while(i<length)
                    {
                        int realRead = fs.Read(data,(int)i,(int)offset);
                        i+=realRead;
                        long tem=length -i;
                        offset=tem>offset?offset:tem;
                        
                        //以时间为文件名//
                        DateTime Now = DateTime.Now;
                        string fileName=string.Format("{0}.dat",Now.Year+""+Now.Month+""+Now.Day+"_"+Now.Hour+""+Now.Minute+""+Now.Second);
                        StartCoroutine(upload(fileName,data));
                    }
                }
            }
        }
    }
    IEnumerator upload(string fileName,byte[] data)
    {
        WWWForm form = new WWWForm();
        form.AddField("type","file");
        form.AddBinaryData("log_file",data,fileName,"application/x-gzip");


        string url="http://192.168.0.119:8080/uploadLog";
        #if !UNITY_EDITOR
        url = "http://192.168.218.1:8080/uploadLog";    //外网的地址//
        #endif
        WWW w=new WWW(url,form);
        yield return w;
        if(w.error != null)
        {
            Debug.LogError(w.error);
        }
        else
        {
            if(w.text != null)
            {
                Debug.Log("Finished Uploading:"+w.text);
            }
        }
        yield return null;
    }
}

 

注意,WWWForm的AddBinaryData接口的第四个参数是mimeType,
常见的MIME类型如下:
超文本标记语言文本.html,           text/html
普通文本  .txt               text/plain
RTF文本  .rtf               application/rtf
gif图形  .gif                            image/gif
JPEG图形  .ipeg,.jpg               image/jpeg
au声音文件  .au                       audio/basic
MIDI音乐文件  .mid,.midi          audio/midi,  audio/x-midi
RealAudio音乐文件 .ra,.ram           audio/x-pn-realaudio
MPEG文件  .mpg,.mpeg                 video/mpeg
AVI文件  .avi                    video/x-msvideo
GZIP文件  .gz                  application/x-gzip
TAR文件  .tar                   application/x-tar

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐