首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 實現 Web 檔案上傳兩種方法(二):完整元件代碼實作

     編輯:關於C語言

2. C# 實現 Web 檔案上傳

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.HtmlControls;
using System.Drawing.Imaging;
using System.Configuration;
using System.Drawing;

namespace zhuanti
{
    /// <summary>
    /// 玩家投稿中實現玩家上傳檔案功能用到的相應函數功能模組
    /// </summary>
    public class FileUpload
    {
        public enum File // 定義一個用於存放玩家上傳檔案資訊陣列
        {
            FILE_SIZE,      // 大小
            FILE_POSTNAME,  // 類型 (檔案副檔名)
            FILE_SYSNAME,   // 系統名
            FILE_ORGINNAME, // 原始名稱
            FILE_PATH       // 檔案路徑
        }

        private static Random rnd = new Random(); // 取得一個隨機數

        public static string[] UploadFile(HtmlInputFile file, string Upload_Dir) // 實現玩家檔案上傳主功能函數
        {
            string[] arr = new String[5];
            string FileName = GetUniquelyString(); // 取得不重複檔名
            string FileOrginName = file.PostedFile.FileName.Substring(file.PostedFile.FileName.LastIndexOf("\\") + 1); // 取得檔案原始名
            if (file.PostedFile.ContentLength <= 0) { return null; }
            string postFileName;
            string FilePath = Upload_Dir.ToString();
            string path = FilePath + "\\";
            try
            {
                int pos = file.PostedFile.FileName.LastIndexOf(".") + 1;
                postFileName = file.PostedFile.FileName.Substring(pos, file.PostedFile.FileName.Length - pos);
                file.PostedFile.SaveAs(path + FileName + "." + postFileName); // 儲存指定檔案到指定目錄
            }
            catch (Exception exec)
            {
                throw (exec);
            }
            double unit = 1024;
            double size = Math.Round(file.PostedFile.ContentLength / unit, 2);
            arr[(int)File.FILE_SIZE] = size.ToString(); // 檔案大小
            arr[(int)File.FILE_POSTNAME] = postFileName; // 檔案類型 (副檔名)
            arr[(int)File.FILE_SYSNAME] = FileName; // 檔案系統名
            arr[(int)File.FILE_ORGINNAME] = FileOrginName; // 檔案原始名稱
            arr[(int)File.FILE_PATH] = path + FileName + "." + postFileName; // 檔案路徑
            return arr;
        }

        public static bool OperateDB(string sqlstr) // 建立資料庫關聯
        {
            if (sqlstr == String.Empty) return false;
            SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connstring"]);
            SqlCommand myCommand = new SqlCommand(sqlstr, myConnection);
            myConnection.Open();
            myCommand.ExecuteNonQuery();
            myConnection.Close();
            return true;
        }

        public static string GetUniquelyString() // 取得不重複檔名
        {
            const int RANDOM_MAX_VALUE = 1000;
            string strTemp, strYear, strMonth, strDay, strHour, strMinute, strSecond, strMillisecond;
            DateTime dt = DateTime.Now;
            int rndNumber = rnd.Next(RANDOM_MAX_VALUE);
            strYear = dt.Year.ToString();
            strMonth = (dt.Month > 9) ? dt.Month.ToString() : "0" + dt.Month.ToString();
            strDay = (dt.Day > 9) ? dt.Day.ToString() : "0" + dt.Day.ToString();
            strHour = (dt.Hour > 9) ? dt.Hour.ToString() : "0" + dt.Hour.ToString();
            strMinute = (dt.Minute > 9) ? dt.Minute.ToString() : "0" + dt.Minute.ToString();
            strSecond = (dt.Second > 9) ? dt.Second.ToString() : "0" + dt.Second.ToString();
            strMillisecond = dt.Millisecond.ToString();
            strTemp = strYear + strMonth + strDay + "_" + strHour + strMinute + strSecond + "_" + strMillisecond + "_" + rndNumber.ToString();
            return strTemp;
        }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved