2019年12月11日 星期三

FileUpload控制項批次上傳範例

找批次上傳的參考時的筆記,紀錄一下,要 .NET版本4.5才能用...


參考網址:
https://dotblogs.com.tw/mis2000lab/2012/04/26/net45_fileupload_allowmultiple



HTML畫面設計:
      注意!!只有一個 FileUpload控制項而已。
                      它的 AllowMultiple屬性已經啟動!



VB語法,範例如下:
    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        '--註解:網站上的目錄路徑。所以不寫磁碟名稱(不寫 “實體”路徑)。
        '--           上傳後的存檔目錄,請依照您的環境作修改。

        Dim saveDir As String = "\[Book]FileUpload\Uploads\"
        Dim appPath As String = Request.PhysicalApplicationPath

        Dim tempfileName As String = Nothing
        Dim myLabel As New System.Text.StringBuilder

        '===========================================
        '== Ony .NET 4.5有這個新的 AllowMultiPle屬性
        '===========================================


        Dim fileName, savePath As String
        For Each postedFile As HttpPostedFile In FileUpload1.PostedFiles
            fileName = postedFile.FileName

            ' –完成檔案上傳的動作。
            savePath = appPath & saveDir & fileName
            postedFile.SaveAs(savePath)

            myLabel.Append("<hr>檔名---- " & fileName)

        Next

        Label1.Text = "上傳成功" & myLabel.ToString()
    End Sub





2019年11月24日 星期日

.net vb 排除特定符號字元

需要阻擋透過表單傳遞惡意傳遞sql或其他指令,本想用正則表達式但考慮到email跟一些使用者可能使用的符號所以還是作罷,最後用比對方式處理,紀錄一下參考資料

VB.NET code

Public Class Form3
    Private ReadOnly InvalidChars As String = "[" + System.Text.RegularExpressions.Regex.Replace(""";&^%$#", ".", "\$&") + "]"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As String = "有特殊字符哦"
        If System.Text.RegularExpressions.Regex.Match(s, InvalidChars).Success Then
            MessageBox.Show("有特殊字符")
        Else
            MessageBox.Show("没有特殊字符")
        End If
    End Sub
End Class

參考網址:

2019年2月10日 星期日

.NET跟IIS的上傳限制設定

更新版本後的IIS以前的寫法沒用了,網路上找到的方法引用來memo當筆記

ASP.net File Upload Size

前言

從IIS7開始,IIS預設限制28MB左右的要求內容長度,而ASP.net預設則是限制4MB大小
如果一個網站的用戶想上傳100MB檔案,勢必IIS和ASP.net兩邊都要設定

實作

ASP.net Web.config裡寫下以下區段
<system.web>
 <httpRuntime  maxRequestLength="102400" executionTimeout="600"/>
</system.web>
maxRequestLength 檔案大小(KB),預設值4096 KB(4MB),所以102400KB為100MB
executionTimeout 上傳時間(秒),600秒為10分鐘
<system.webServer>
 <security>
  <requestFiltering>
   <requestLimits maxAllowedContentLength="104857600" />
  </requestFiltering>
 </security>
</system.webServer>
maxAllowedContentLength 檔案大小(byte),所以104857600(1024*1024*100)為100MB
上述system.webServer也可以透過IIS來設定
允許的內容長度上限預設值為30000000(約28MB),把它修改為104857600

如此一來,網站便可以上傳100MB大小的檔案了

加碼補充

如果當使用者上傳檔案超過限制大小時,想重新導向到自訂的錯誤頁面
在Global.asax.cs裡寫下...
protected void Application_BeginRequest(object sender, EventArgs e)
{
 HttpRuntimeSection section = (HttpRuntimeSection)ConfigurationManager.GetSection("system.web/httpRuntime");
 int maxFileSize = section.MaxRequestLength * 1024;
 if (Request.ContentLength > maxFileSize)
 {
  try
  {
   Response.Redirect("~/MySizeError.aspx");
  }
  catch (Exception ex)
  {
   
  }
 }
}


引用來源:高級打字員的技術雲