html代码
<form id="scwj" class="layui-form" action="/TempDeb/FileUpload" method="post" enctype="multipart/form-data">
<input type="text" id="lldz" name="lldz" value="@ViewBag.linkaddress" hidden="hidden" />
<input class="layui-btn" accept=".bin,.txt" type="file" id="File" name="File" />
</form>
后台代码
public ActionResult FileUpload(string lldz)
{
//Request.Files["File"].SaveAs(Request.MapPath("~/upload/") + Request.Files["File"].FileName);
//int fileCount = Request.Files.Count; //上传数量
//double fileSize = Request.Files["File"].ContentLength; //文件大小(字节)
//string fileName = Request.Files["File"].FileName; //文件名
//string fileType = Request.Files["File"].ContentType;//文件类型
//string fileExt = System.IO.Path.GetExtension(fileName); //文件扩展后缀名
//return Content($"上传数量:{fileCount} 文件名:{fileName} 文件类型:{fileType} 文件格式:{fileExt}");
HttpPostedFileBase file = Request.Files["File"];
if (file != null)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("/upload"), Path.GetFileName(file.FileName));
file.SaveAs(filePath);
Response.Write("<script>alert('上传成功');</script>");
}
else
{
Response.Write("<script>alert('上传失败'); </script>");
}
return Redirect("/TempDeb/RemoteDefendOper?linkaddress="+ lldz);
}
样式调整,源码
<input class="layui-btn" accept=".bin" type="file" id="File" name="File" onchange="document.getElementById('wjmc').value = this.value;" style="opacity:1;width:1px;height:1px;position:absolute;left:10px;" />
隐藏此标签
document.getElementById("File").click();
使用自定义按钮单击调用,这个事件
后台替代form提交
Request.Files["File"].SaveAs(Request.MapPath("~/upload/") + Request.Files["File"].FileName);//上传到服务器
try
{
//HttpPostedFileBase file = Request.Files["File"];
string url = @"http://ip:8070/MasterAPI/WritePostFile?linkAddress="+lldz;
string modelId = "4f1e2e3d-6231-4b13-96a4-835e5af10394";
string updateTime = "2020-10-13 11:17:15";
string encrypt = "f933797503d6e2c36762428a280e0559";
string filePath = Request.MapPath("~/upload/") + Request.Files["File"].FileName;
string fileName = Request.Files["File"].FileName;
byte[] fileContentByte = new byte[1024]; // 文件内容二进制
#region 将文件转成二进制
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
fileContentByte = new byte[fs.Length]; // 二进制文件
fs.Read(fileContentByte, 0, Convert.ToInt32(fs.Length));
fs.Close();
#endregion
#region 定义请求体中的内容 并转成二进制
string boundary = "ceshi";
string Enter = "\r\n";
string modelIdStr = "--" + boundary + Enter
+ "Content-Disposition: form-data; name=\"modelId\"" + Enter + Enter
+ modelId + Enter;
string fileContentStr = "--" + boundary + Enter
+ "Content-Type:application/octet-stream" + Enter
+ "Content-Disposition: form-data; name=\"fileContent\"; filename=\"" + fileName + "\"" + Enter + Enter;
string updateTimeStr = Enter + "--" + boundary + Enter
+ "Content-Disposition: form-data; name=\"updateTime\"" + Enter + Enter
+ updateTime;
string encryptStr = Enter + "--" + boundary + Enter
+ "Content-Disposition: form-data; name=\"encrypt\"" + Enter + Enter
+ encrypt + Enter + "--" + boundary + "--";
var modelIdStrByte = Encoding.UTF8.GetBytes(modelIdStr);//modelId所有字符串二进制
var fileContentStrByte = Encoding.UTF8.GetBytes(fileContentStr);//fileContent一些名称等信息的二进制(不包含文件本身)
var updateTimeStrByte = Encoding.UTF8.GetBytes(updateTimeStr);//updateTime所有字符串二进制
var encryptStrByte = Encoding.UTF8.GetBytes(encryptStr);//encrypt所有字符串二进制
#endregion
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "multipart/form-data;boundary=" + boundary;
Stream myRequestStream = request.GetRequestStream();//定义请求流
#region 将各个二进制 安顺序写入请求流 modelIdStr -> (fileContentStr + fileContent) -> uodateTimeStr -> encryptStr
myRequestStream.Write(modelIdStrByte, 0, modelIdStrByte.Length);
myRequestStream.Write(fileContentStrByte, 0, fileContentStrByte.Length);
myRequestStream.Write(fileContentByte, 0, fileContentByte.Length);
myRequestStream.Write(updateTimeStrByte, 0, updateTimeStrByte.Length);
myRequestStream.Write(encryptStrByte, 0, encryptStrByte.Length);
#endregion
HttpWebResponse response = (HttpWebResponse)request.GetResponse();//发送
Stream myResponseStream = response.GetResponseStream();//获取返回值
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
}
catch (Exception ex)
{
}