C# 把本地文件上傳到服務器上,和從服務器上下載文件


 

 方法一、通過Ajax方式上傳文件(input file),使用FormData進行Ajax請求

<div  >

< input  type="file" name="FileUpload" id="FileUpload">
< a  class="layui-btn layui-btn-mini" id="btn_uploadimg">上傳圖片</ a >
</ div >
 
<script type= "text/jscript" >
 
        $( function  () {
            $( "#btn_uploadimg" ).click( function  () {
                var  fileObj = document.getElementById( "FileUpload" ).files[0];  // js 獲取文件對象,(據說IE8 不支持.files寫法,未測試
                if  ( typeof  (fileObj) ==  "undefined"  || fileObj.size <= 0) {
                    alert( "請選擇圖片" );
                    return ;
                }
                var  formFile =  new  FormData();
                formFile.append( "action" "UploadVMKImagePath" );  
                formFile.append( "file" , fileObj);  //加入文件對象
 
                //第一種  XMLHttpRequest 對象
                //var xhr = new XMLHttpRequest();
                //xhr.open("post", "/Admin/Ajax/VMKHandler.ashx", true);
                //xhr.onload = function () {
                //    alert("上傳完成!");
                //};
                //xhr.send(formFile);
 
                //第二種 ajax 提交
 
                var  data = formFile;
                $.ajax({
                    url:  "/Admin/Ajax/VMKHandler.ashx" ,
                    data: data,
                    type:  "Post" ,
                    dataType:  "json" ,
                    cache:  false , //上傳文件無需緩存
                    processData:  false , //用於對data參數進行序列化處理 這里必須false
                    contentType:  false //必須
                    success:  function  (result) {
                        alert( "上傳完成!" );
                    },
                })
            })
        })
 
    </script>
 
方法二、通過form和input file上傳
 

<form id="fmFileUpload_Knowledge" method="post" enctype="multipart/form-data">

//必須要有name屬性,name屬性是用於在前台和后台間建立聯系的,form中只有具有name屬性的控件,其值才會被傳遞到后台,而沒有name屬性的控件后台程序是接收不到它的值的

<input id="UploadFile" type="file" name="name1" /></div> 

</form>

 

<script type= "text/jscript" >
 
        $( function  () {
            $( "#btn_uploadimg" ).click( function  () {

                  var options = {
                    type: 'post',
                    data: { Default: "FileUpload",},
                    url: 'Index.aspx',
                    success: function (data) {  

                      //兼容IE和FireFox
                      var file = $("#UploadFile");
                      file.after(file.clone().val(""));
                      file.remove();

                    }
                  };
                  $('#fmFileUpload_Knowledge').ajaxSubmit(options);

            })
        })
 
    </script>
 
后台

private string FileUpload()
{
string fileName = string.Empty;
string serverPath = string.Empty;
try
{
HttpFileCollection httpFileCollection = Request.Files;
if (httpFileCollection.Count > 0) //如果沒有name屬性,獲取不到file
{
HttpPostedFile file = httpFileCollection[0];


fileName = Path.GetFileName(file.FileName);

if (File.Exists(serverPath))
{
rdsl.returnMessage = "該文件已存在,請更改文件名或者刪除原文件,然后上傳.";
return GetJSON.JSONSerialize(rdsl);
}

Thread thread = new Thread(new ThreadStart(() =>
{
file.SaveAs(serverPath);
}
));
thread.Start();

}
else
{
rdsl.returnCode = iCode.ToString();
rdsl.returnMessage = "未獲取到文件.";

}
return GetJSON.JSONSerialize(rdsl);

}
catch (Exception ex)
{
log.Error(ex.Message);
log.Error(ex.StackTrace);

}


}

------------------------------------------------------------------------------------------------------------

/// <summary>
/// 下載文件方法
/// </summary>
/// <param name="serverPath">被下載的文件地址(服務器地址包括文件)</param>
/// <param name="filePath">另存放的路徑(本地需要存儲文件的文件夾地址)</param>
public void Download(string serverPath, string filePath)
{
  WebClient client = new WebClient();
  string fileName = serverPath.Substring(serverPath.LastIndexOf("/") + 1); ;//被下載的文件名
  string path = filePath + fileName;//另存為地址
  try
  {
    WebRequest myre = WebRequest.Create(serverPath);
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message, "Error");
  }
  try
  {
    client.DownloadFile(serverPath, fileName);
    FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    BinaryReader r = new BinaryReader(fs);
    byte[] mbyte = r.ReadBytes((int)fs.Length);
    FileStream fstr = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
    fstr.Write(mbyte, 0, (int)fs.Length);
    fstr.Close();
  }
  catch (Exception ex)
  {
  MessageBox.Show(ex.Message, "Error");
  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM