1. 程式人生 > >上傳頭像功能的前後端互動。

上傳頭像功能的前後端互動。

建立工程。

關於工程的建立,前面的文章中已經做過介紹,此處不再贅述。本文的操作仍需要,express和multer兩個依賴項。

建立完畢之後,工程專案下的檔案目錄截圖如下圖所示:

這個工程專案比前幾篇文章多了一個allHeaders 的資料夾,這個資料夾是用來儲存圖片的,以保證後面後端給前端傳送圖片之用。

主要功能和起作用的位置有兩點:

1.當在頁面上上傳圖片之後,會儲存到這個檔案。

2.當前端需要後端給圖片資料的時候,會從這個檔案中讀取獲得。

先進入index.html前端檔案,進行設定。

設定按鈕操作程式碼如下:

<form action="/upload" method="POST" enctype="multipart/form-data" >

<input type="file" accept="image/jpg,image/png,image/jpeg,image/gif" required = 'required' name="photo">

<input id="sub" type="submit" value="上傳頭像">

</form>

此時開啟瀏覽器:顯示的介面如下:

通過上面的操作可以選擇好圖片,

此時我們就要對後端進行設定了,這個時候已經剛剛完成了前端的上傳功能的部分按鈕。

這個時候,我們進入index.js檔案中:

var express = require('express')

var bodyParser = require('body-parser')

var multer = require('multer')

var web = express()

web.use(express.static('public'))

web.use(bodyParser.urlencoded({extended:false}))

先將這幾句必須的程式碼寫好。

接著我們在後端建立檔案,來儲存我們上傳的圖片:

程式碼如下:

前端設定:

<script>

var sub = document.getElementById('sub')

// 增加一個事件監聽物件

sub.addEventListener('click',function(){

setTimeout(function(){

window.location.href = 'http://localhost:8080'

},10)

})

</script>

後端設定:

var account = 123321

var fullName = ''

// 當前配置資訊不負責上傳頭像,上傳頭像由前端負責

// 當前配置資訊只負責設定圖片的儲存路徑以及設定圖片的名字

var headerConfig = multer.diskStorage({

// 儲存的路徑

destination:'public/allHeaders',

// 設定圖片的名稱

filename:function(req,file,callback){

// 以.分割原始名字(驗證碼.png)

var name = file.originalname.split('.')

var fileType = name[name.length-1]

account++

// callback回撥函式生成圖片的名稱需要兩個值

// 值1:錯誤資訊

// 值2:圖片名稱

fullName = account+'.'+fileType

callback(null,account+'.'+fileType)

}

})

// 建立一個載入配置資訊的upload物件

var upload = multer({storage:headerConfig})

web.post('/upload',upload.single('photo'),function(req,res){

res.send('')

})

web.listen('8080',function(){

console.log('伺服器啟動......')

})

此時,我們重啟伺服器,重新載入網頁,點選上傳之後,便會看到,工程目錄下的allHeaders資料夾下已經有了圖片。

工程資料夾目錄下的所有檔案如下圖所示:

這個時候我們已經把圖片儲存好了,接下來只需要再完成將圖片在前端請求資料的時候,將這個圖片傳送給前端,前端接收之後,在介面上顯示出來就完成了上傳頭像的所有功能,是不是很簡單?

此時,前端對後端傳送一個get請求,然後後端在接收到請求之後向前端傳送圖片,前端接收之後在瀏覽器介面顯示出來。

前端設定:

function getHeader(){

var xhr = new XMLHttpRequest()

xhr.open('get','/getHeader')

xhr.send()

後端設定:

web.get('/getHeader',function(req,res){

res.send('allHeaders/'+fullName)

})

此時完成了傳送資料之間的所有功能。接下來要做的工作就是在前端建立個顯示圖片的標籤。

具體程式碼如下:

xhr.onreadystatechange = function(){

if(xhr.readyState == 4)

{

var headers = document.createElement('img')

headers.style.width = '200px'

headers.style.height = '200px'

headers.style.borderRadius = '50%'

headers.style.border = '10px solid white'

headers.src = xhr.responseText

document.body.appendChild(headers)

}

}

下附所有完整程式碼。通過本篇介紹,我們主要用到的檔案,只有前端的index.html和後端的index.js兩個檔案:

前端所有程式碼:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>上傳圖片</title>

<style>

body {

background-color: yellow;

}

</style>

</head>

<body>

<form action="/upload" method="POST" enctype="multipart/form-data">

<input type="file" accept="image/jpg,image/png,image/jpeg,image/gif" required='required' name="photo">

<input id="sub" type="submit" value="上傳頭像">

</form>

<script>

var sub = document.getElementById('sub')

// add增加 event時間 listenter監聽者

// 增加一個事件監聽物件

sub.addEventListener('click', function () {

setTimeout(function () {

window.location.href = 'http://localhost:8080'

}, 10)

})

getHeader()

function getHeader() {

var xhr = new XMLHttpRequest()

xhr.open('get', '/getHeader')

xhr.send()

xhr.onreadystatechange = function () {

if (xhr.readyState == 4) {

var headers = document.createElement('img')

headers.style.width = '200px'

headers.style.height = '200px'

headers.style.borderRadius = '50%'

headers.style.border = '10px solid white'

headers.src = xhr.responseText

document.body.appendChild(headers)

}

}

}

</script>

</body>

</html>

後端所有程式碼:

var express = require('express')

var bodyParser = require('body-parser')

var multer = require('multer')

var web = express()

web.use(express.static('public'))

web.use(bodyParser.urlencoded({extended:false}))

var account = 123321

var fullName = ''

// 當前配置資訊不負責上傳頭像,上傳頭像由前端負責

// 當前配置資訊只負責設定圖片的儲存路徑以及設定圖片的名字

var headerConfig = multer.diskStorage({

// 儲存的路徑

destination:'public/allHeaders',

// 設定圖片的名稱

filename:function(req,file,callback){

// 以.分割原始名字(驗證碼.png)

var name = file.originalname.split('.')

var fileType = name[name.length-1]

account++

// callback回撥函式生成圖片的名稱需要兩個值

// 值1:錯誤資訊

// 值2:圖片名稱

fullName = account+'.'+fileType

callback(null,account+'.'+fileType)

}

})

// 建立一個載入配置資訊的upload物件

var upload = multer({storage:headerConfig})

web.post('/upload',upload.single('photo'),function(req,res){

res.send('')

})

web.get('/getHeader',function(req,res){

res.send('allHeaders/'+fullName)

})

web.listen('8080',function(){

console.log('伺服器啟動......')

})

此時重啟後端伺服器,重新整理瀏覽器介面,選擇圖片之後上傳,然後點選上傳頭像按鈕,得到的介面如下所示:

其他所有的上傳頭像的功能與此處流程基本類似。快去試試吧。

相關推薦

頭像功能前後互動

建立工程。 關於工程的建立,前面的文章中已經做過介紹,此處不再贅述。本文的操作仍需要,express和multer兩個依賴項。 建立完畢之後,工程專案下的檔案目錄截圖如下圖所示: 這個工程專案比前幾篇文章多了一個allHeaders 的資料夾,這個資料夾是用來儲

Android Studio第四十期 - 頭像功能支持權限管理

android 服務器 代碼已經整理好,加了權限管理和SP保存上傳服務器的方法,希望能夠幫到大家~效果如下圖: 地址:https://github.com/geeklx/MyApplication/tree/master/p025_upload_img 附:這裏借鑒了翔神(

【java小程式】小程式視訊檔案的前後程式碼

文章目錄 小程式端程式碼 1、上傳視訊選中事件 2、背景音樂的頁面載入 上傳檔案的後端程式碼 上傳小視訊功能,我們是通過我的主頁點選上傳按鈕進行上傳,選中視訊後會

MVC Api微信小程式wx.uploadFile檔案,前後程式碼例項

// 小程式端js Page({ /** * 頁面的初始資料 */ data: { userHeaderImage: "../../../images/1.jpg" }

完美實現類似QQ的自拍頭像頭像功能!(Demo 原始碼)

現在很多下載客戶端程式都需要設定自己頭像的功能,而設定頭像一般有兩種方式:使用攝像頭自拍頭像,或者選擇一個圖片的某部分割槽域作為自己的頭像。一.相關技術  若要實現上述的自拍頭像和上傳頭像的功能,會碰到

Android 7.0實現拍照、獲取相簿圖片頭像功能

對網上關於Android7.0的上傳頭像進行整理 1.新增許可權管理。內容例如以下: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-pe

PC頭像及裁剪功能

  基於vue框架 藉助elementUI框架做為上傳元件 藉助vue-cropper做為裁剪工具 話不多說,先看效果: 上傳頭像元件: <div class="app-head"> <h3>小程式頭像<

【java小程式】頭像功能實現

上傳頭像小程式端的頁面程式碼和前面的登出程式碼一樣,可以去【java小程式實戰】小程式登出功能實現檢視 文章目錄 小程式端的js實現(mine.js) java後臺程式碼: 1、UserService介面

移動 頭像 並裁剪功能(h5)

charset 移動端 error max cli alert initial port round <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta

微信小程式圖片功能(附後程式碼)

幾乎每個程式都需要用到圖片,在小程式中我們可以通過image元件顯示圖片。 當然小程式也是可以上傳圖片的,微信小程式文件也寫的很清楚。 上傳圖片 首先選擇圖片 通過wx.chooseImage(OBJECT)實現 官方示例程式碼 ? 1 2

thinkphp3.2.3 ueditor1.4.3 圖片操作,線上刪除圖片功能

<?php namespace PublicClass; /** * Ueditor外掛 * @author Nintendov */ class Ueditor { //public $uid;//要操作的使用者id 如有登入需要則去掉註釋 private $output; //

前後互動

一.簡析前後端互動 java語言是一種強型別的語言,必須定義型別,然後生成例項,而js卻不是,雖然它也是面向物件的,但是它並沒有先定義類這一種概念(但是js也有型別),它是基於原型的一種模式,和java完全不同。很顯然,二者的原理,機制,語法並不能相容。二者產生的物件並不能

H5移動剪下頭像

        移動端比如app,ios,微信,H5頁面開發過程中很多人都會遇到更換頭像的需求,這時我們需要實現點選頭像選擇相簿圖片或者拍照,然後對圖片進行壓縮裁剪,然後進行提交上傳,到更換頭5像的效果。話不多說,上傳效果圖:

Android實現檔案,圖片,以及服務接收相關

前面一篇文章寫了實現照相功能的一個例子,其實那個實現效果是個略縮圖。要檢視全圖就要先指定照片的存放路徑。以後我會修改那個文章。今天先說下圖片,檔案等上傳的實現。接著拿照片說事,光照完了不行還得往伺服器上傳。 我們做web開發的時候幾乎都是通過一個表單來實現上傳

uploadify+jcrop實現頭像裁剪功能

因為無法debug,斷斷續續幾天才搞定 首先載入各個js和css,都在官網下載~ uploadify.css jcrop.css jquery.js jquery.uploadify.min.js jcrop.js 步驟:uploadify上傳圖片,得到圖片路徑在前臺顯示

Libcurl的初步實現tfp下載功能

rtmp 細致 helib art download close 2.3 article 可能 該學習筆記的目標是利用libcurl實現ftp文件上傳和下載功能 一、Libcurlde的簡單介紹 Libcurl是一個免費的而且易於使用的利用url進行文件傳輸的庫。,

文件按鈕美化,文件前後狀態控制

http val lee 圖片 html return hid jpg 按鈕 我們在做input文本上傳的時候,html自帶的上傳按鈕比較醜,如何對其進行美化呢?同理:input checkbox美化,input radio美化是一個道理的. input file上傳按鈕

flask 頭像

file turn col log {} str 文件 and quest 上傳頭像,自己感覺了好久,就是上傳文件唄其實,存在一個路徑,數據庫存儲這個路徑,然後展示給前端,啥都不說,看怎麽實現的。 數據庫設置如下 user_image=db.Column(d

使用HttpRequest.Files 獲取文件,實現附件功能

post 分享 new 失敗 light 查看 continue 存在 nbsp 使用HttpRequest.Files 獲取上傳文件,實現上傳附件功能,不同瀏覽器會有差異: 獲得在 Google 瀏覽器上傳後得到的 HttpRequest.Files (客戶端上載文件

rsa加密算法,前後實現

exceptio eof 測試 ror iic shm rsa加密算法 pac puts 前端js:   下載地址:http://travistidwell.com/jsencrypt/ js第一版本: 1 // 對數據加密 2 function e