關於解決網站頁面Banner圖片即時更換css里背景圖片url相對路徑問題的新方案

来源:http://www.cnblogs.com/zhouyuangan/archive/2016/10/01/aspnet_1.html
-Advertisement-
Play Games

最近在網站首頁上想將Banner壁紙給做到後臺上傳隨時更改的效果。遇到問題便是:將上傳的圖片路徑動態添加到首頁css代碼中,結果嘗試了網上提供的思路,更改相對路徑,沒能成功。於是自己想過另一種實現方案 ...


  最近在網站首頁上想將Banner壁紙給做到後臺上傳隨時更改的效果。遇到問題便是:將上傳的圖片路徑動態添加到首頁css代碼中,結果嘗試了網上提供的思路,更改相對路徑,換為url中“../../Content/”以及“./Content/”之類的,但實際操作並沒能實現新上傳的圖片路徑載入到css代碼中。首頁部分css代碼貼出:

 

 1 /*--banner--*/
 2         .banner {
 3             background:url(../images/banner-1.jpg) no-repeat 0px 0px;            
 4             background-size: cover;
 5             -webkit-background-size: cover;
 6             -o-background-size: cover;
 7             -ms-background-size: cover;
 8             -moz-background-size: cover;
 9             min-height: 600px;
10         }

  首頁部分html貼出:

1 <div class="banner">    
2     <div class="container">
3         <h2>Humanity ,Love ,Devotion</h2>
4         <h2></h2>
5         <p></p>
6         <a href="#service">快速獲取我們提供的服務</a>        
7     </div>
8 </div>

  之前思路是,將上傳的圖片路徑獲取後,保存在mysql資料庫中,然後寫一個分頁,在分頁里將路徑讀出來,這時候將css里background:url(../images/banner-1.jpg) no-repeat 0px 0px;換成了一個欄位賦值;

  關於實現欄位賦值實現是這樣的:

1 @using TheOne.Models
2 @using TheOne.MySqlAccess
3 @{
4     SystemServiceAccess ssAccess = new SystemServiceAccess();
5     String BannerPicUrl = ssAccess.GetBannerPic();     
6 }

  BannerPicUrl被加在 background:url(../@BannerPicUrl) no-repeat 0px 0px;

折騰許久的相對路徑,沒能達到效果,於是我想出另一種實現思路,能不能將css保留原樣,而只要將css引入的圖片在文件系統里進行更換、重命名。慶幸的是,asp.net 擁有強大的文件操作功能!於是我開始重新開始寫實現功能代碼。

  這是核心功能,裡面有幾點需要說明:

 1  [HttpPost]
 2         public ActionResult AddBannerPic(HttpPostedFileBase file)
 3         {            
 4             //上傳文章封面圖片
 5             try
 6             {
 7                 if (file != null && file.ContentLength > 0)
 8                 {
 9                     //文件路徑後要加尾碼.jpg
10                     string DeletePath =System.IO.Path.Combine(Server.MapPath( "~/Content/FrontEnd/images"),"Banner-1.jpg");
11                     try
12                     {
13                         System.IO.File.Delete(DeletePath);//刪除指定文件目錄下的圖片
14                     }
15                     catch (Exception f)
16                     {
17                         
18                         throw f;
19                     }
20                    
21                     //重命名上傳的圖片名稱                    
22                     string NewBannerPicName = "Banner-1.jpg";//指定新文件名                                        
23                     string Path = System.IO.Path.Combine(Server.MapPath("~/Content/FrontEnd/images"), NewBannerPicName);//更新前端Content文件夾下的目錄Banner-1圖片
24                     file.SaveAs(Path);//存入新路徑
25                 }
26             }
27             catch (Exception e)
28             {
29                 throw e;
30             }
31 32 return View("Index"); 33 }

 

  1. 寫出上傳頁面,併在控制器中的action對文件進行操作,這裡用到的上傳方法比較老套,沒有採用ajax,用的微軟提供的方法——HttpPostedFileBase,這裡需要說明的是,上傳組件<input/>需要註意幾點:<input name="file" id="file" type="file" class="file" />    name和id需要註明為file
  2. string DeletePath =System.IO.Path.Combine(Server.MapPath( "~/Content/FrontEnd/images"),"Banner-1.jpg");//這裡已經寫死了,其中Server.MapPath()這個非常實用,可以獲取伺服器目錄的相對路徑,保障了應用程式發佈時的方便性。
  3. 這裡要引入using System.IO;
  4. 當圖片以二進位上傳進入到action時,我們先將已存在的Banner-1.jpg刪除,然後,重命名上傳的文件名,並保存在舊目錄中

  這樣我刷新首頁時,就能看到我剛上傳的圖片,這樣的實現,沒有使用資料庫存儲,也沒有更改css相對路徑,只需要使用到文件操作(System.IO)。

項目演示地址:http://www.libertas.ren/

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在公有雲發佈一個個人建的靜態站點 要求: 1、使用騰訊雲申請一個雲主機 2、申請萬網個人功能變數名稱 3、使用三種web伺服器來發佈個人的站點 一、首先我選擇了騰訊雲的雲主機: ~1)低消費嘗試一下,當然有錢的可以包年包月 ~2) 由於準備安裝的是Linux系統選擇CentOS ~3)基礎網路,收費便宜點 ...
  • Linux 練習 1、SSH遠程服務的管理操作 A、通過兩種方式來拒絕開放一個埠22(SSH埠): 要求:一種是通過修改配置文件並重新載入配置;另一種是通過命令操作方式來實現開放一個埠,並測試埠是否通。 1.firewalled cmd remove port=22/tcp permanen ...
  • 基於個人興趣,決定實現一個和方案公司提供的uboot收發廣播的功能。記錄筆記如下。 SDK版本:Hi3518E_V100R001C01SPC081 1. 由於我手頭的板子的Phy是RMII模式,因此先按這篇帖子進行將uboot預設的網路驅動改為RMII模式。 http://blog.csdn.net ...
  • 安裝中的流程和問題 1、安裝準備 硬碟分區 下載rhel-server-6.2-i386-dvd.iso 接下來就是一些安裝過程 2、安裝教程有很多,可以結合參考: http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0819/8430.h ...
  • 在最近的日常工作中由於經常會和Linux伺服器打交道,如Oracle性能優化、我們數據採集伺服器的資源利用率監控,以及Debug伺服器代碼並解決其效率和穩定性等問題。因此這段時間總結的有關Linux Shell的系列博客就給予了我極大的幫助,然而在實際的使用中卻發現,有的時候確實忘記了某個技術點或某 ...
  • 普通的vim的移動,編輯等命令就不再贅述。這裡主要是記錄一些不常見但是很逼格的命令,使你瞬間感到精神為之一振的命令 1. :Tlist 1)該命令是列出當前文件中的類名,變數名和函數名,移動時還會有提示。 2. :colorscheme desert 1)設置vim的界面風格,類似的還有 :colo ...
  • 由於linux伺服器允許多用戶登錄,工作造成一定的障礙,所以需要有時踢出指定的用戶 1.用 w 命令查看信息 # wroot pts/0 2010-10-28 09:36 (192.168.1.236)root pts/1 2010-10-28 09:40 (192.168.1.27) 2.我想踢出 ...
  • 前幾天,因為工作原因,連到了公司的一個java系統。查看數據的時候,突然整個人都不好了,資料庫中日期欄位時間為毛都是整型?之前從來沒有接觸過java,所心就趁機瞭解了一下。原來,在資料庫中,保存的是java中的System.currentTimeMillis()。這個返回是從1970年1月1日0時0 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...