最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET文件上傳Upload的實現(xiàn)方法

 更新時間:2016年11月01日 08:46:21   作者:???笨小孩  
這篇文章主要為大家詳細(xì)介紹了ASP.NET文件上傳的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了ASP.NET 文件上傳,供大家參考,具體內(nèi)容如下

1、最近應(yīng)項目開發(fā)的需求要實現(xiàn)附件的異步上傳和下載。

2、上傳:文件上傳到指定的路徑下,并返回上傳文件的信息給前端界面,如:文件的圖標(biāo)、上傳的文件名、文件的大小。

3、上傳后,在前端界面上顯示上傳的文件信息,點擊文件名實現(xiàn)將上傳的文件下載到本地。

4、先展示一下Demo運行的效果圖:

點擊提交后:

點擊文件名實現(xiàn)下載到本地:

5、下面就給出前臺代碼:

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Ajax Form - jQuery EasyUI Demo</title>
 <link rel="stylesheet" type="text/css" >
 <link rel="stylesheet" type="text/css" >
 <link rel="stylesheet" type="text/css" >
 <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
 <script type="text/javascript" src="http://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
</head>
<body>
 <h2>Ajax Form Demo</h2>
 <div class="demo-info" style="margin-bottom:10px">
 <div class="demo-tip icon-tip">&nbsp;</div>
 <div>Type in input box and submit the form.</div>
 </div>

 <div class="easyui-panel" title="Ajax Form" style="width:300px;padding:10px;">
 <form id="ff" action="api/Loding" method="post" enctype="multipart/form-data">
  <table>
  <tr>
   <td>Name:</td>
   <td><input name="name" class="f1 easyui-textbox"></input></td>
  </tr>
  <tr>
   <td>Email:</td>
   <td><input name="email" class="f1 easyui-textbox"></input></td>
  </tr>
  <tr>
   <td>Phone:</td>
   <td><input name="phone" class="f1 easyui-textbox"></input></td>
  </tr>
  <tr>
   <td>File:</td>
   <td><input name="file" class="f1 easyui-filebox"></input></td>
  </tr>
  <tr>
   <td></td>
   <td><input type="submit" value="提交"></input></td>
  </tr>
  </table>
  <input type="text" value="LodingTable" name="tableName" hidden="hidden" />
 </form>
 </div>
 <div>
 <img id="img" src="" width="20" height="20" />
 <a id="downLoad" downloadid="0" href="#"></a>
 <label>文件大?。?lt;/label>
 <label class="size"></label><button id="delete">刪除</button>
 <button id="loding">導(dǎo)入1</button>
 </div>
 <style scoped>
 .f1 {
  width: 200px;
 }
 </style>
 <script type="text/javascript">
 $(function () {
  $("#loding").hide();
  $("#delete").hide().click(function () {
  alert("刪除文件");
  });
  $("#loding").click(function () {
  var tUrl = '/api/Loding/Get';
  //var tJsonStr = '{"idInventoryPrice":"4","withdrawDetails":[{"cInvCode":"800487","cInvCodeSub":"00","iConverDiscount":"0","iUnitPrice":"9.9","iSalePrice":"9.9"},{"cInvCode":"800689","cInvCodeSub":"00","iConverDiscount":"0","iUnitPrice":"6.5","iSalePrice":"5.9"}]}';
  $.ajax({
   type: "Get",
   url: tUrl,
   dataType: "json",
   async: false,
   success: function (data) {
   alert(JSON.stringify(data));
   }
  });
  });
  $('#ff').form({
  success: function (data) {
   var json = JSON.parse(data);
   if (json.result == 1) {
   $("#delete").show();
   $("#img").attr("src", json.details[0].AttachmentNameTypeICO);
   $("#downLoad").attr("downloadid", json.details[0].ID);   $("#downLoad").html(json.details[0].AttachmentName);
   $(".size").html(json.details[0].AttachSize + "KB");
   var tUrl = 'http://localhost:11703/api/Loding/DownLoad?ID=' + $("#downLoad").attr("downloadid");
   $("#downLoad").attr("href", tUrl);
   }
   else {
   alert(json.resultdetail);
   }
  }
  });
 });
 </script>
</body>
</html> 

6、后臺上傳代碼:

NameValueCollection nvf = HttpContext.Current.Request.Form;
  if (!Request.Content.IsMimeMultipartContent())
  {
  throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
  }
  string tempPath = "/Upload/" + DateTime.Now.ToString("yyyy-MM-dd/");
  string fileSaveLocation = HttpContext.Current.Server.MapPath("~" + tempPath);//附件的保存地址
  Dictionary<string, object> dic = new Dictionary<string, object>();
  if (!Directory.Exists(fileSaveLocation))
  {
  Directory.CreateDirectory(fileSaveLocation);
  }
  CustomMultipartFormDataStreamProvider provider = new CustomMultipartFormDataStreamProvider(fileSaveLocation);
  try
  {
  var result = await Request.Content.ReadAsMultipartAsync(provider).ContinueWith<Dictionary<string, object>>(x =>
  {
   var file = provider.FileData[0];
   FileInfo fileinfo = new FileInfo(file.LocalFileName);
   if (fileinfo.Length <= 0)
   {
   dic.Add("result", -1);
   dic.Add("resultdetail", "未上傳文件");
   }
   else
   {
   double? filelength = fileinfo.Length / 1024.0;
   if (filelength > 10 * 1024)
   {
    dic.Add("result", -1);
    dic.Add("resultdetail", "上傳文件不能大于10M");
   }
   else
   {
    string saveFileName = Guid.NewGuid().ToString() + fileinfo.Extension;
    fileinfo.CopyTo(Path.Combine(fileSaveLocation, saveFileName), true);
    fileinfo.Delete();
    dic.Add("result", 1);
    dic.Add("resultdetail", "上傳成功");
    dic.Add("realPath", file.LocalFileName);//附件保存的絕對路徑
    dic.Add("attachmentType", fileinfo.Extension);//附件類型
    dic.Add("attachmentName", Path.GetFileName(file.LocalFileName));//上傳的附件名
    dic.Add("attachSize", Convert.ToInt32(filelength));//附件大小KB
    dic.Add("aealPath", tempPath + saveFileName);//附件保存相對路徑
   }
   }
   return dic;
  }, TaskScheduler.FromCurrentSynchronizationContext());
  }
  catch (Exception ex)
  {
  return HandleJson.ToJson(ex.ToString(), false);
  }
  var isSuccess = dic["result"].TryToInt() == 1;
  var msg = dic["resultdetail"].TryToString();//返回上傳信息
  var realPath = string.Empty;//附件保存的絕對路徑
  var relativePath = string.Empty;//返回相對路徑
  var AttachSize = 0;//文件大小kB
  var AttachmentType = string.Empty;//文件擴展名
  var AttachmentName = string.Empty;//原文件名
  if (isSuccess)
  {
  realPath = dic["realPath"].TryToString();
  relativePath = dic["aealPath"].TryToString();
  AttachSize = dic["attachSize"].TryToInt();
  AttachmentType = dic["attachmentType"].TryToString();
  AttachmentName = dic["attachmentName"].TryToString();
  }

  StringBuilder sql = new StringBuilder();
  if (isSuccess)
  {
  try
  {
   #region 獲取圖標(biāo)路徑

   var ICOPath = string.Empty;
   sql.Append(@"SELECT * FROM dbo.AttachmentType(NOLOCK) WHERE AttachmentType=@AttachmentType");
   var ICOTable = Common.HandleSQL.GetData(sql.ToString(), null, new SqlParameter[] { new SqlParameter("@AttachmentType", AttachmentType) });
   if (ICOTable.Rows.Count <= 0)
   {
   ICOPath = "";
   }
   else
   {
   ICOPath = ICOTable.Rows[0]["AttachmentNameTypeICO"].ToString();
   }

   #endregion 獲取圖標(biāo)路徑

   #region 保存上傳記錄

   sql.Clear();
   sql.Append(@"DECLARE @ID INT
SELECT @ID=MAX(ID)+1 FROM dbo.Attachment(NOLOCK)
IF(@ID IS NULL)
BEGIN
SET @ID=1
END
INSERT INTO dbo.Attachment
 ( ID ,
  AttachmentName ,
  AttachmentType ,
  RealPath ,
  AttachSize ,
  UpLoadDate ,
  UpLoadPerson ,
  UpLoadIPAddress
 )
VALUES ( @ID , -- ID - int
  @AttachmentName , -- AttachmentName - nvarchar(max)
  @AttachmentType , -- AttachmentType - nvarchar(50)
  @RealPath , -- RealPath - nvarchar(max)
  @AttachSize , -- AttachSize - bigint
  GETDATE() , -- UpLoadDate - datetime
  @UpLoadPerson , -- UpLoadPerson - nvarchar(50)
  @UpLoadIPAddress -- UpLoadIPAddress - varchar(50)
 )
SELECT * FROM dbo.Attachment(NOLOCK) WHERE ID=@ID;
");
   SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@AttachmentName", AttachmentName),
   new SqlParameter("@AttachSize", AttachSize), new SqlParameter("@RealPath", relativePath),
   new SqlParameter("@AttachmentType", AttachmentType),new SqlParameter("@UpLoadPerson","魏小偉"),new SqlParameter("@UpLoadIPAddress",HandleLog.getIPAddress()) };
   var insert = GetData(sql.ToString(), null, paras);
   insert.Columns.Add("AttachmentNameTypeICO", typeof(string));
   insert.Rows[0]["AttachmentNameTypeICO"] = ICOPath;
   int ID = Convert.ToInt32(insert.Rows[0]["ID"].ToString());//上傳附件的ID
   return HandleJson.ToJson(insert, 0);

   #endregion 保存上傳記錄
  }
  catch (Exception ex)
  {
   if (System.IO.File.Exists(realPath))
   {
   File.Delete(realPath);
   }
   return HandleJson.ToJson(ex.ToString(), false);
  }
  }
  else
  {
  return HandleJson.ToJson(msg, false);
  }

7、下載代碼:

[HttpGet, Route("api/Loding/DownLoad")]
 public HttpResponseMessage DownLoad()
 {
  #region 獲取界面參數(shù)

  NameValueCollection nvc = HttpContext.Current.Request.QueryString;
  int ID = nvc["ID"].TryToInt();
  if (ID <= 0)
  {
  return HandleJson.ToJson("傳入?yún)?shù)錯誤", false);
  }

  #endregion 獲取界面參數(shù)

  #region SQL

  StringBuilder sql = new StringBuilder();
  sql.Append(@"SELECT * FROM dbo.Attachment(NOLOCK) WHERE ID=@ID ");

  #endregion SQL

  #region 執(zhí)行SQL

  var dt = HandleSQL.GetData(sql.ToString(), null, new SqlParameter[] { new SqlParameter("@ID", ID) });
  if (dt.Rows.Count <= 0)
  {
  return HandleJson.ToJson("未找到下載文件", false);
  }
  var filePath = HttpContext.Current.Server.MapPath("~" + dt.Rows[0]["RealPath"].TryToString());//下載文件的絕對路徑
  string fileName = dt.Rows[0]["AttachmentName"].TryToString();//下載的文件名

  #endregion 執(zhí)行SQL

  #region 下載文件并添加下載記錄

  try
  {
  //var FilePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/download/" + fileName);
  var stream = new FileStream(filePath, FileMode.Open);
  HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
  response.Content = new StreamContent(stream);
  response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
  response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
  {
   FileName = fileName
  };

  #region 添加下載記錄

  sql.Clear();
  SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@ID", ID), new SqlParameter("@DownLoadPerson", "魏小偉"), new SqlParameter("@DownLoadIP", HandleLog.getIPAddress()) };
  sql.Append(@"DECLARE @AutoID INT
SELECT @AutoID=MAX(AutoID)+1 FROM dbo.AttachmentDowLoadLog(NOLOCK)
IF(@AutoID IS NULL)
BEGIN
SET @AutoID=1
END
INSERT INTO dbo.AttachmentDowLoadLog
 ( AutoID ,
  ID ,
  DownLoadPerson ,
  DownLoadDate ,
  DownLoadIP
 )
VALUES ( @AutoID , -- AutoID - int
  @ID , -- ID - int
  @DownLoadPerson , -- DownLoadPerson - nvarchar(max)
  GETDATE() , -- DownLoadDate - datetime
  @DownLoadIP -- DownLoadIP - nvarchar(50)
 );");
  execSQL(sql.ToString(), null, paras);

  #endregion 添加下載記錄

  return response;
  }
  catch
  {
  return new HttpResponseMessage(HttpStatusCode.NoContent);
  }

  #endregion 下載文件并添加下載記錄
 }


8、以上只是我個人的一個小Demo,有不對或需要改進的地方還請大家多多提點!

精彩專題分享:ASP.NET文件上傳匯總 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • asp.net 生成隨機密碼的具體代碼

    asp.net 生成隨機密碼的具體代碼

    這篇文章介紹了asp.net 生成隨機密碼的具體代碼,有需要的朋友可以參考一下
    2013-09-09
  • Visual Studio 2017如何用正則修改部分內(nèi)容詳解

    Visual Studio 2017如何用正則修改部分內(nèi)容詳解

    這篇文章主要給大家介紹了關(guān)于Visual Studio 2017如何用正則修改部分內(nèi)容的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • .net 獲取瀏覽器Cookie(包括HttpOnly)實例分享

    .net 獲取瀏覽器Cookie(包括HttpOnly)實例分享

    這篇文章介紹了.net 獲取瀏覽器Cookie(包括HttpOnly)實例,有需要的朋友可以參考一下
    2013-10-10
  • .net通過Action進行Options參數(shù)的傳遞的方法

    .net通過Action進行Options參數(shù)的傳遞的方法

    在.NET Core中,使用Action和Options參數(shù)方式配置服務(wù)并將配置信息對象注冊到IServiceCollection的好處在于,它提供了更高級別的可配置性和可擴展性,這篇文章主要介紹了.net通過Action進行Options參數(shù)的傳遞,你知道是怎么實現(xiàn)的嗎,需要的朋友可以參考下
    2023-12-12
  • 基于ASP.NET+easyUI框架實現(xiàn)圖片上傳功能(判斷格式+即時瀏覽 )

    基于ASP.NET+easyUI框架實現(xiàn)圖片上傳功能(判斷格式+即時瀏覽 )

    這篇文章主要介紹了基于ASP.NET+easyUI框架實現(xiàn)圖片上傳功能的相關(guān)資料,重點在于如何判斷格式,實現(xiàn)即時瀏覽,需要的朋友可以參考下
    2016-06-06
  • 基于ABP框架實現(xiàn)數(shù)據(jù)字典開發(fā)

    基于ABP框架實現(xiàn)數(shù)據(jù)字典開發(fā)

    本文詳細(xì)講解了基于ABP框架實現(xiàn)數(shù)據(jù)字典開發(fā),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C#使用Aspose.Cells導(dǎo)出excel

    C#使用Aspose.Cells導(dǎo)出excel

    這篇文章主要為大家詳細(xì)介紹了C#使用Aspose.Cells導(dǎo)出excel,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 詳解使用asp.net mvc部分視圖渲染html

    詳解使用asp.net mvc部分視圖渲染html

    為了提升用戶體驗,一般我們采用ajax加載數(shù)據(jù)然后根據(jù)數(shù)據(jù)渲染html,渲染html可以使用前端渲染和服務(wù)器端渲染,有興趣的可以了解一下
    2017-07-07
  • .NET Core系列之MemoryCache 緩存過期

    .NET Core系列之MemoryCache 緩存過期

    這篇文章主要介紹了.NET Core系列之MemoryCache 緩存過期,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • ASP.Net刷新頁面后自動滾動到原來位置方法匯總

    ASP.Net刷新頁面后自動滾動到原來位置方法匯總

    本文給大家匯總了3種ASP.Net實現(xiàn)的刷新頁面后自動滾動到原來位置方法,十分的簡單實用,有需要的小伙伴可以參考下。
    2015-06-06

最新評論

和顺县| 广昌县| 吉木萨尔县| 奎屯市| 梅州市| 泸水县| 安化县| 纳雍县| 涿鹿县| 斗六市| 定州市| 定襄县| 扬中市| 江阴市| 广昌县| 华安县| 五莲县| 南城县| 武夷山市| 松滋市| 庆云县| 兖州市| 渝中区| 嘉禾县| 建昌县| 玉田县| 和田县| 崇州市| 佛山市| 横峰县| 顺平县| 德格县| 建阳市| 陆良县| 那坡县| 新乡市| 溧水县| 屏山县| 铁岭县| 富源县| 新津县|