同步上传
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using UnityEditor;
using UnityEngine;
public class UploadAB
{
[MenuItem("AB包工具/上传AB包和对比文件")]
private static void UploadAllABFile()
{
//获取文件夹信息
DirectoryInfo directory = Directory.CreateDirectory(Application.dataPath + "/AB/PC/");
//获取该目录下所有文件信息
FileInfo[] fileInfos = directory.GetFiles();
foreach (FileInfo info in fileInfos)
{
//文件后缀,没有后缀为AB包,对比文件为TXT(或ABCompareInfo)
if (info.Extension == "" || info.Extension == ".txt")
{
//上传该文件
FtpUpload(info.FullName, info.Name);
}
}
}
private static void FtpUpload(string filePath, string flieName)
{
try
{
//创建Ftp链接上传
FtpWebRequest req = FtpWebRequest.Create(new Uri("ftp://192.168.3.50/AB/PC/" + flieName)) as FtpWebRequest;//127.0.0.1
//设置通信凭证上传
NetworkCredential n = new NetworkCredential("Box", "jj13579");//账号密码
req.Credentials = n;
//设置代理为null,请求完毕后关闭控制连接,操作命令-上传,指定传输类型-2进制
req.Proxy = null;
req.KeepAlive = false;
req.Method = WebRequestMethods.Ftp.UploadFile;
req.UseBinary = true;
//上传文件 创建流对象
Stream upLoadStream = req.GetRequestStream();
//读取文件信息,写入流对象
using (FileStream file = File.OpenRead(filePath))
{
//2kb上传
byte[] bytes = new byte[2048];
int contentLength = file.Read(bytes, 0, bytes.Length);//读到内容长度
//循环上传文件数据
while (contentLength != 0)
{
//写入到上传流中
upLoadStream.Write(bytes, 0, contentLength);
//写完再读,为0为止
contentLength = file.Read(bytes, 0, bytes.Length);
}
//循环完毕 上传结束
file.Close();
upLoadStream.Close();
}
Debug.Log(flieName + "文件上传成功");
}
catch (Exception ex)
{
Debug.Log("上传失败:" + ex);
}
}
}
异步上传
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading.Tasks;
using UnityEditor;
using UnityEngine;
public class UploadAB
{
[MenuItem("AB包工具/上传AB包和对比文件")]
private static void UploadAllABFile()
{
//获取文件夹信息
DirectoryInfo directory = Directory.CreateDirectory(Application.dataPath + "/AB/PC/");
//获取该目录下所有文件信息
FileInfo[] fileInfos = directory.GetFiles();
foreach (FileInfo info in fileInfos)
{
//文件后缀,没有后缀为AB包,对比文件为TXT(或ABCompareInfo)
if (info.Extension == "" || info.Extension == ".txt")
{
//上传该文件
FtpUpload(info.FullName, info.Name);
}
}
}
//异步函数async await任务类
private async static void FtpUpload(string filePath, string flieName)
{
//多线程
await Task.Run(() =>
{
try
{
//创建Ftp链接上传
FtpWebRequest req = FtpWebRequest.Create(new Uri("ftp://192.168.3.50/AB/PC/" + flieName)) as FtpWebRequest;//127.0.0.1
//设置通信凭证上传
NetworkCredential n = new NetworkCredential("Box", "jj13579");//账号密码
req.Credentials = n;
//设置代理为null,请求完毕后关闭控制连接,操作命令-上传,指定传输类型-2进制
req.Proxy = null;
req.KeepAlive = false;
req.Method = WebRequestMethods.Ftp.UploadFile;
req.UseBinary = true;
//上传文件 创建流对象
Stream upLoadStream = req.GetRequestStream();
//读取文件信息,写入流对象
using (FileStream file = File.OpenRead(filePath))
{
//2kb上传
byte[] bytes = new byte[2048];
int contentLength = file.Read(bytes, 0, bytes.Length);//读到内容长度
//循环上传文件数据
while (contentLength != 0)
{
//写入到上传流中
upLoadStream.Write(bytes, 0, contentLength);
//写完再读,为0为止
contentLength = file.Read(bytes, 0, bytes.Length);
}
//循环完毕 上传结束
file.Close();
upLoadStream.Close();
}
Debug.Log(flieName + "文件上传成功");
}
catch (Exception ex)
{
Debug.Log(flieName + "上传失败:" + ex);
}
});
}
}