1. 程式人生 > >上傳檔案點選後顯示圖片

上傳檔案點選後顯示圖片

例項:

效果:

html:

<div class="file_picture_d">
   <div class="file_picture_l_d file_cont_d">
      <div id="yingye">
                  <img class="img3" src='__PUBLIC__/business/images/register_file_bg.png'>
      </div>
                             <input name="photo3" type=
"hidden" id="E_Img3" value="" /> <input type="file" onclick="uploadImg(3)" style="" id="photo3"/> <span>營業執照證書</span> </div> <div class="file_picture_r_d file_cont_d"> <div id="shangpiao"> <img class="img4"
src='__PUBLIC__/business/images/register_file_bg.png'> </div> <input name="photo4" type="hidden" id="E_Img4" value="" /> <input type="file" onclick="uploadImg(4)" style="" id="photo4"/> <span>品牌商標證書</span> </div>
</div>

uploadImg(1) 就是有多張圖片、來傳引數、方便 賦值圖片地址,我們上面加了一個隱藏域、上傳照片ajax請求到後臺、然後後臺上傳,然後把上傳圖片的地址傳送到前端、前端接收url 、顯示到對應的img 、隱藏域儲存地址、然後再提交後臺儲存到資料庫中

pcUploadImg(1);
function pcUploadImg(num){

    document.getElementById('photo' + num).onchange = function(){

        var img = event.target.files[0];
// 判斷是否圖片
if(!img) return false;
//判斷圖片大小
if (num ==1 || num ==2) {
            if (img.size > (2 * 1024 * 1024)) {
                dialog1('請上傳在2MB以內的圖片');
return false;
}
        }
        if (num == 3) {
            if (img.size > (100 * 1024)) {
                dialog1('請上傳在100KB以內的圖片');
return false;
}
        }
        // 判斷圖片格式
if(!(img.type.indexOf('image')==0 && img.type && /\.(?:jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$/.test(img.name)) ){
            dialog1('圖片只能是jpg,gif,png');
return false;
}

        var reader = new FileReader();
reader.readAsDataURL(img);
reader.onload = function(e){ // reader onload start
            // ajax 上傳圖片
$.post("{:U('Login/taskImgUpload')}", { img: e.target.result, imgname : img.name},function(ret){
                if(ret.img != ''){
                    $(".img"+num).attr("src", ret.img);
$("#E_Img"+num).val(ret.img);
}else{
                    dialog1('上傳失敗');
return false;
}
            },'json');
} // reader onload end
}
}
//彈出資訊框
function dialog1(text){
}

php程式碼:

$img = $_POST['img'];//
// 獲取圖片
list($type, $data) = explode(',', $img);
if(strstr($type,'image/png')){
    $ext = '.png';
}elseif(strstr($type,'image/jpg')){
    $ext = '.jpg';
}elseif(strstr($type,'image/gif')){
    $ext = '.gif';        //獲取圖片字尾
}
//獲取檔名
$imgName = explode('.',$_POST['imgname']);
$imgName = $imgName[0];
//生成檔名
$new_imgName = md5($imgName).$ext;
//圖片存放目錄
$rootDir = __ROOT__ . 'public/business';
$twoDir = '/images/'.date('ymd',time()).'/';
$save_dir = $rootDir.$twoDir; //
//建立目錄
if(!$this->mkdirs($save_dir)){
    $ret = array('img' => '', 'info' => "上傳失敗", 'status' => 0);
echo json_encode($ret);
exit;
}

//判斷檔案是否存在
$fileName = $save_dir . $new_imgName;
if(!file_exists($fileName)){
    // 生成檔案
file_put_contents($fileName, base64_decode($data), true);
}

// 返回給客戶端
$newPhoto = '/public/business' . $twoDir . $new_imgName; //新圖片
$ret = array('img' => $newPhoto, 'info' => "上傳成功", 'status' => 1);
echo json_encode($ret);
//判斷目錄是否存在 不存在則建立
function mkdirs($dir, $mode = 0777)
{
    if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;
if (!mkdirs(dirname($dir), $mode)) return FALSE;
return @mkdir($dir, $mode);
}

相關推薦

檔案顯示圖片

例項: 效果: html: <div class="file_picture_d"> <div class="file_picture_l_d file_cont_d"&g

實現檔案將檔名稱顯示在text中

先上程式碼 html <input type="file" id="file"/> <input type="text" placeholder="file name" id="ai

Extjs 使用fileupload外掛檔案 帶進度條顯示

一.首先我們看看官方給出的外掛的解釋: 一個檔案上傳表單項具有自定義的樣式,並且可以控制按鈕的文字和 像文字表單的空文字類似的其他特性。 它使用一個隱藏的檔案輸入元素,並在使用者選擇檔案後 在form提交的同時執行實際的檔案上傳。 因為沒有安全的跨瀏覽器以程式設計的方式對file表單項設值的方式,

解決FTPClient檔案為空,顯示0位元組

JAVA使用FTPClient上傳檔案時總是為空 分析:Port模式,是客戶端C在本地開啟一個埠等服務端S去連線建立資料連線;而Pasv模式就是服務端S開啟一個埠等待客戶端C去建立一個數據連線。 解決:預設情況下,FTPCLIENT用的是port模式,可以在FTPCLIE

【Git】從本地到github的文章顯示圖片的方法

雖然這段時間一直在git上上傳程式碼或者是文章,但是還沒有試過在github上面上傳圖片,前兩天寫了一篇部落格,裡面有很多插圖,就想著是不是可以一塊上傳到github上面去呢? 中間失敗的各種方法就不贅述,下面說一下成功的兩種方法: 方法一 : 將圖片單獨

centos 7 通過xshell檔案多種方案仍然失敗的處理建議

其實這個問題要先看你是否在最初安裝centos 7 時是否是最小化安裝,這種安裝時系統預設的,也是最坑的 裡面省略了很多功能,導致無法安裝, 大多數問題都是在不知情的情況下選擇了這種預設的方式,導致的各種安裝後系統的各種問題 建議重新安裝centos 7 ,並選擇最大的

Ionic3 登入選單顯示不出來

1、背景 編寫一個公共的選單元件ContentPage,ContentPage是這個App根頁面的預設頁面,將首頁預設為該元件的rootPage,在第一次登入時沒有問題,但是退出後,再次登入就會導致menu點選不了,選單項出不來。 <ion-menu [conten

JSP使用FileUpload檔案設定setSizeMax連線被重置

今天在學習利用JSP+Servlet+FileUpload開發檔案上傳功能。在設定了上傳檔案最大限制為10M以後,選擇了3M的pdf上傳提交後連線被重置了。。。 我的程式碼: //設定上傳單個檔案的大小的最大值,目前是設定為1024*1024位元組,也就是1MB

織夢頂級欄目顯示第一個子欄目的方法

新建一個url.htm檔案,然後將一級欄目的欄目屬性設定為封面頁。並將封面模版更改為url.htm。 將以下程式碼複製到該檔案中即可; <script> {dede:channel type='son' row='1'} window.location

使用type=file 檔案時2007各文件如docx需配置的accept屬性值

Extension MIME Type .xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xltx application/vnd.openxmlformats-offi

java ajax非同步檔案(文件、圖片都可以)

在寫專案的時候,經常用到圖片上傳啊什麼的,這兒提供一個方法,萬能,咋都能用。 ajax $(".save-head").click(function () { var formData = new FormData();

通過label觸發隱藏input:file檔案或者圖片

<label class="img1"> <div id="fileList1" class="fileLists"> <img src="/template/mobile/new2/static/images/aodi/idA.png

實現圖片檔案

上傳檔案的話可以這樣: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-

HTML+js+css實現圖片彈出檔案視窗的兩種思路

第一種:CSS實現 <style> <!--  .fileInputContainer{         height:256px;         background:url(upfile.png);         position:rel

頁面圖片顯示效果

{    field: "filepath1",     title: "整改前圖片",     sortable: false,  &nb

bootstrap-fileinput檔案再開啟檔案介面顯示取消按鈕

Bootstrap File Input是一款基於bootstrap框架的html5上傳檔案外掛,具體展示效果如下: 使用時常見配置如下:         $(".multipleFileUpload").fileinput({   &n

利用HTML5檔案顯示在前端預覽,以圖片為例

由於專案中有上傳檔案的功能,所以這次單獨拿出來研究研究,我上網查了查,以前都是用iframe,但是自從HTML5出世之後,就可以利用H5的一些特性來上傳檔案了,啥也不說了,我上程式碼了 <!DOCTYPE html> <html lang

Qt預覽圖片(同一目錄下),單張顯示

介面展示 主介面將對目標目錄下的影象檔案進行預覽 點選預覽影象將會單張最大化視窗顯示該圖片 話不多說,直接上程式碼 // imagewidget.h #ifndef IMAGEWIDGET_H #define IMAGEWIDGET_H

按鈕觸發Ajax非同步檔案(附加:table按鈕刪除行)

一、使用背景 1、在專案中需要點選按鈕即上傳檔案,提交表單時只需要儲存檔案ID即可; 2、同一個表單中有多處需要上傳檔案,多個按鈕非同步上傳檔案互不影響; 3、java後臺使用同一個檔案上傳介面。 二、利用ajaxfileupload.js實現檔案非同步上傳 aja

vue 圖示實現檔案效果

查了好多網友的文章,有兩種方法 第一種是用相對定位、絕對位、overflow 配合opacity 實現<span class="fileinput-button "> <i class="fa fa-folder-open-o" aria-hidden="