1. 程式人生 > >FCKeditor 上傳修改,新增對檔案的型別以及大小的限制(ASP.NET C#)

FCKeditor 上傳修改,新增對檔案的型別以及大小的限制(ASP.NET C#)

用了FCKeditor以後才知道,在效能上確實是挺優越的,特別是在載入的速度上,遠比其它的編輯器要來得快,而且跨語言跨平臺,也不會像FreeTextBox那樣在頁面中加入一大堆的ViewState檢視狀態程式碼,減輕了頁面檔案的重量,提高了載入速度. 

編輯器本身也內建了檔案上傳功能,但他卻不對檔案的型別以及大小做出限制,以至於帶有安全憂患,萬一給人上傳了一個木馬或者一個上面兆的影片檔案怎麼辦,當然,修改*config.js檔案可以解決,但似乎存在著某方面的安全隱患吧.

由於FCKeditor本身是開源的,所以我可以對裡面的某些程式碼進行修改.

首先是對FileWorkerBase.cs基類的修改

using System;

namespace FredCK.FCKeditorV2
{
    
publicabstractclass FileWorkerBase : System.Web.UI.Page
    
{
        
privateconststring DEFAULT_USER_FILES_PATH ="/UserFiles/";

        
privateconststring DEFAULT_USER_FILES_UPLOADTYPE =".jpg.jpeg.bmp.gif.png.zip.rar.swf.";//預設允許上傳檔案型別
privateconstint DEFAULT_USER_FILES_UPLOADSIZE 
=1024;//預設允許上傳檔案大小(1024KB)

        
privatestring sUserFilesPath;
        
privatestring sUserFilesDirectory;

        
privatestring sUserUploadType;
        
privateint iUserUploadSize =0;

        
protectedstring UserFilesPath
        
{
            
get
            
{
                
if (sUserFilesPath ==null)
                
{
                    
// Try to get from the "Application".
                    sUserFilesPath = (string)Application["FCKeditor:UserFilesPath"];

                    
// Try to get from the "Session".
if (sUserFilesPath ==null|| sUserFilesPath.Length ==0)
                    
{
                        sUserFilesPath 
= (string)Session["FCKeditor:UserFilesPath"];

                        
// Try to get from the Web.config file.
if (sUserFilesPath ==null|| sUserFilesPath.Length ==0)
                        
{

                            sUserFilesPath 
= System.Web.Configuration.WebConfigurationManager.AppSettings["FCKeditor:UserFilesPath"];

                            
// Otherwise use the default value.
if (sUserFilesPath ==null|| sUserFilesPath.Length ==0)
                                sUserFilesPath 
= DEFAULT_USER_FILES_PATH;

                            
// Try to get from the URL.
if (sUserFilesPath ==null|| sUserFilesPath.Length ==0)
                            
{
                                sUserFilesPath 
= Request.QueryString["ServerPath"];
                            }

                        }

                    }


                    
// Check that the user path ends with slash ("/")
if (!sUserFilesPath.EndsWith("/"))
                        sUserFilesPath 
+="/";
                }

                
return sUserFilesPath;
            }

        }



        
///<summary>
        
/// The absolution path (server side) of the user files directory. It 
        
/// is based on the <see cref="FileWorkerBase.UserFilesPath"/>.
        
///</summary>

protectedstring UserFilesDirectory
        
{
            
get
            
{
                
if (sUserFilesDirectory ==null)
                
{
                    
// Get the local (server) directory path translation.
                    sUserFilesDirectory = Server.MapPath(this.UserFilesPath);
                }

                
return sUserFilesDirectory;
            }

        }


        
///<summary>
        
/// 獲取允許上傳的型別
        
///</summary>

protectedstring UserUploadType
        
{
            
get
            
{
                
if (sUserUploadType ==null)
                
{
                    
// Try to get from the "Application".
                    sUserUploadType = (string)Application["FCKeditor:UserUploadType"];

                    
// Try to get from the "Session".
if (sUserUploadType ==null|| sUserUploadType.Length ==0)
                    
{
                        sUserUploadType 
= (string)Session["FCKeditor:UserUploadType"];

                        
// Try to get from the Web.config file.
if (sUserUploadType ==null|| sUserUploadType.Length ==0)
                        
{

                            sUserUploadType 
= System.Web.Configuration.WebConfigurationManager.AppSettings["FCKeditor:UserUploadType"];

                            
// Otherwise use the default value.
if (sUserUploadType ==null|| sUserUploadType.Length ==0)
                                sUserUploadType 
= DEFAULT_USER_FILES_UPLOADTYPE;

                        }

                    }


                    
// Check that the user path starts and ends with slash (".")
if (!sUserUploadType.StartsWith("."))
                        sUserUploadType 
="."+ sUserUploadType;

                    
if (!sUserUploadType.EndsWith("."))
                        sUserUploadType 
+=".";
                }

                
return sUserUploadType;
            }

        }


        
///<summary>
        
/// 獲取允許上傳的檔案最大限制
        
///</summary>

protectedint UserUploadSize
        
{
            
get
            
{
                
if (iUserUploadSize <1)
                
{
                    iUserUploadSize 
= Convert.ToInt32(Application["FCKeditor:UserUploadSize"]);
                    
if (iUserUploadSize <1)
                    
{
                        iUserUploadSize 
= Convert.ToInt32(Session["FCKeditor:UserUploadSize"]);
                        
if (iUserUploadSize <1)
                        
{
                            iUserUploadSize 
= Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["FCKeditor:UserUploadSize"]);
                            
if (iUserUploadSize <1)
                            
{
                                iUserUploadSize 
= DEFAULT_USER_FILES_UPLOADSIZE;
                            }

                        }

                    }

                }


                
return iUserUploadSize;
            }

        }

    }

}

接著就是對點選"瀏覽伺服器"頁面的上傳部分的修改

以下是對FileBrowserConnector.cs中的FileUpload()函式的修改

privatevoid FileUpload(string resourceType, string currentFolder)
        
{
            HttpPostedFile oFile 
= Request.Files["NewFile"];

            
string sErrorNumber ="0";
            
string sFileName ="";

            
if (oFile !=null&& oFile.ContentLength >0)
            
{
                
// Map the virtual path to the local server path.
string sServerDir =this.ServerMapFolder(resourceType, currentFolder);
                
/*
                // Get the uploaded file name.
                sFileName = System.IO.Path.GetFileName( oFile.FileName ) ;

                int iCounter = 0 ;

                while ( true )
                {

相關推薦

FCKeditor 修改,新增檔案型別以及大小限制(ASP.NET C#)

用了FCKeditor以後才知道,在效能上確實是挺優越的,特別是在載入的速度上,遠比其它的編輯器要來得快,而且跨語言跨平臺,也不會像FreeTextBox那樣在頁面中加入一大堆的ViewState檢視狀態程式碼,減輕了頁面檔案的重量,提高了載入速度.  編輯器本身也內建了檔案

layui檔案傳回調前檔案型別大小判斷

layui.use(['upload', 'form'], function () { var upload = layui.upload; var form = layui.form; upload.r

uploadfive.js實現檔案不能判斷檔案型別的問題

在專案中利用uploadfive.js 實現檔案上傳的時候,遇到一個問題,即上傳檔案時不能判斷檔案型別,特此記錄一下。 官網中檔案型別的判斷是使用fileType欄位,如下圖 : 但在專案中使用該

檔案字尾名與檔案型別對照表

IE 火狐(FF) id 字尾名 php識別出的檔案型別 0 gif image/gif 1 jpg image/jpeg 2 png image/png 3 bmp image/bmp 4 psd application/octet-stream 5 ico

.NET快速資訊化系統開發框架 V3.2-&gt;Web版本新增檔案管理中心”集、下載、檔案共享等一身,非常實用的功能

  檔案中心是3.2版本開始新增的一個非常實用功能,可以歸檔自己平時所需要的檔案,也可以把檔案分享給別人,更像一個知識中心。檔案中心主介面如下圖所示,左側“我的網盤”展示了使用者對檔案的分類,只能自己看到,“公共盤”中的檔案所有使用者都可以看到。選擇一個分類,右側列出了當前分類的所有檔案(第一列

javaweb 簡單的檔案動態新增檔案數量[從學習到工作(六)]

    1.jsp頁面主要程式碼塊  <script type="text/javascript" src="<%=basePath%>js/jquery.min.js"></script> <form actio

.NET快速資訊化系統開發框架 V3.2->Web版本新增檔案管理中心”集、下載、檔案共享等一身,非常實用的功能

  檔案中心是3.2版本開始新增的一個非常實用功能,可以歸檔自己平時所需要的檔案,也可以把檔案分享給別人,更像一個知識中心。檔案中心主介面如下圖所示,左側“我的網盤”展示了使用者對檔案的分類,只能自己看到,“公共盤”中的檔案所有使用者都可以看到。選擇一個分類,右側列出了當前分類的所有檔案(第一列會根據檔案的型

asp.net(c#)檔案時檢測檔案型別方法小結

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using Syst

ajaxFileUpload+struts2實現多檔案(動態新增檔案框)

但只是固定的檔案個數,如果需求不確定是多少檔案 則我們就需要動態的新增檔案上傳框,以實現靈活性。基於上篇基本框架是不變的,主要修改以下幾個方面1、jQuery實現動態新增刪除檔案上傳框2、獲取檔案上傳框

struts2檔案修改為cos框架處理一系列事情

前段時間Struts2出來一個編號CVE-2017-5638的漏洞,影響系統及版本:Struts 2.3.5 - Struts 2.3.31、Struts 2.5 - Struts 2.5.10! 專案經理簡單修復了一下,他直接在配置檔案中新增了這麼個屬性! 屬性如下:

【SVN】Windows下如何使用SVN新增、刪除檔案

操作步驟 1. 本地建立倉庫:在本地新建資料夾,右鍵 —> TortoiseSVN —> Create repository here; 2. 下載已有倉庫:在本地新建資料夾,右鍵 —> Checkout —> 輸入使用者名稱密碼、下載的檔案路徑;

ExtJS4 檔案型別大小的判斷方法(例項) .

接本人博文《》,在上面的基礎上加上ExtJS上傳檔案前對檔案型別和檔案大小進行判斷,不符合要求的將不能被上傳。 PS:本人的原創博文是在開發中遇到的一些常見問題或難題作記錄。由於我是初學者,知識面還遠遠不夠,所以可能有許多地方並不是很好的解決方案,希望朋友你有想法能給予答覆。謝謝! 開始本文的方案描述(原

SpringMVC中檔案新增enctype="multipart/form-data"後表單其他屬性為空

最近在做一個小型專案,用SpringMVC+Spring+Mybatis做的,開始沒有做圖片上傳,也沒有用Spring MVC做過,以前是用Struts2搞定的,所以很自然的, 在設定form表單上的屬性就用了enctype=”multipart/form-da

php中到伺服器的檔案重新命名

 原始碼:$path = './upfiles/'. $_FILES['file']['name'];$filename = basename($path);// basename($path):返回上傳檔案的基本的檔名,如:檔名.doc $actualname = $fil

phpcms v9 表單新增檔案欄位單個檔案(downfile)

$string .= $str."<input type='text' name='info[$field]' id='$field' value='$value' class='input-text' style='width:80%'  readonly='readonly' />  <

開發亞馬遜 MWS中feed修改商品資訊 通過GetFeedSubmissionResult來判斷資料是否成功

GetFeedSubmissionResultSample.php 中的方法如下 $config = array ( 'ServiceURL' => $serviceUrl, 'ProxyHost' => null, 'ProxyPort' => -1, 'MaxErrorRetry' =

ionic拍照圖片與從檔案中選擇圖片

本文主要使用cordova實現拍照上傳,拍照上傳或從資料夾中選擇上傳圖片 流程:拍照或選擇圖片===>獲取本機路徑==>向伺服器上傳圖片,獲取伺服器上圖片路徑 一、環境準備   安裝 cordova-plugin-camera 外掛     &n

使用fckeditor多張圖片

流程: 1.使用fck上傳圖片到後臺 2.後臺上傳圖片到伺服器端 3.伺服器端返回上傳資訊 1.jsp頁面 <script type="text/javascript"> $(function(){ var tObj; $("#tabs a").each(funct

使用java向FTP或下載壓縮檔案時的問題

今天在使用java向FTP伺服器傳輸檔案時遇到了問題,這個檔案是好多圖片的壓縮檔案,直接使用 ftpClient.storeFile(f.getName(), instream); 會將壓縮檔案傳入FTP伺服器,但是在FTP伺服器解壓時發現,壓縮包裡面的圖片解壓不出來,檔案大小是一樣的,但

django設定並獲取cookie/session,檔案,ajax接收檔案,post/get請求及跨域請求等的方法

django設定並獲取cookie/session,檔案上傳,ajax接收檔案等的方法: views.py檔案: from django.shortcuts import render,HttpResponse,redirect import datetime import json from