求分享一个winfrom程序通过调用WebAPI进行批量文件上传的demo
c#吧
全部回复
仅看楼主
level 1
写了一个ApiClient的类来链接两边的调用。。。。之前也就查数据,改数据之类的。没有关于文件上传的。如果是在网页端实现文件上传下载会做,可以这种调用的方式不会。网上看了半天总是几篇文章复制粘贴,而且都是部分都是单方面的,有demo的下载跑都有问题。。。。求大佬分享一点知识[乖]
2018年08月01日 02点08分 1
level 1
我的做法现在时这样做的,但是只能一次上传一个,没有找到可供上传多个的方法,有人看到这个帖子,替我解解惑。。。[乖]
2018年08月01日 07点08分 2
level 1
APIClient代码:
/// <summary>
/// 上传文件
/// </summary>
/// <param name="C1">内部值</param>
/// <param name="F1">内部值</param>
/// <param name="filepath">文件路径</param>
/// <returns></returns>
public bool AnalysisRuleToUpload(int C1, int F1, string filepath)
{
try
{
var query = string.Format("API?C1={0}&F1={1}&filetype=upload", C1, F1);
var queryUri = new Uri(APIEndPoint, query);//初始化赋值
var client = new WebClient();
client.Encoding = Encoding.UTF8;
var result = client.UploadFile(queryUri, filepath);//通过UploadFile方法上传
string str = System.Text.Encoding.Default.GetString(result);
return Convert.ToBoolean(str);
}
catch
{
return false;
}
}
2018年08月01日 07点08分 3
level 1
服务端接收:
/// <summary>
///
/// </summary>
/// <param name="C1">C1</param>
/// <param name="F1">F1</param>
/// <param name="filetype">类型</param>
/// <returns></returns>
[HttpPost]
public async Task<IHttpActionResult> AnalysisRuleToUpload(int C1, int F1, string filetype)
{
HttpFileCollection files = HttpContext.Current.Request.Files;
foreach (string key in files.AllKeys)
{
HttpPostedFile file = files[key];
if (string.IsNullOrEmpty(file.FileName) == false)
{
file.SaveAs(HttpContext.Current.Server.MapPath("~/rule/") + file.FileName);
}
}
return Ok(true);
}
2018年08月01日 08点08分 4
level 1
客户端调用:
foreach (var item in openFileDialog1.FileNames)
{
var url = this.textBox1.Text;
APIClient.Context ctx = new APIClient.Context(new Uri(url));
var a = ctx.AnalysisRuleToUpload(int.Parse(this.textBox3.Text), int.Parse(this.textBox4.Text), item);
}
2018年08月01日 08点08分 5
level 7
粗略看下应该没什么问题。试试不要异步换成同步?
2018年08月01日 17点08分 6
level 1
自己看下成功没,再发表
2020年05月14日 02点05分 7
1