国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

Drupal7通過form API 建立無刷新的圖片上傳功能的四個方法

2024-08-30 19:06:46
字體:
供稿:網(wǎng)友

本文我們講講在Drupal 7通過form API 實現(xiàn)無刷新圖片上傳的幾個方法,比較實用,喜歡drupal建站的朋友可以參考一下.

表單是網(wǎng)站常用的,不可缺少的,而通過表單建立圖片上傳也是剛需,基本每個網(wǎng)站都需要圖片上傳功能,現(xiàn)在比較流行的是直接無刷新上傳圖片,無刷新上傳圖片在drupal7 如何做呢?下面代碼就是實現(xiàn)此功能。

方法1:用file原件配合ajax參數(shù)實現(xiàn):

  1. function testmodule_forma($form, &$form_state){ 
  2. $form['im-container'] = array( 
  3.     '#prefix'=>'<div id="im-area">'
  4.     '#suffix'=>'</div>'
  5. ); 
  6.  
  7. $form['image_file'] = array( 
  8.     '#type' => 'file'
  9. ); 
  10.  
  11. $form['upload'] = array( 
  12.    '#type' => 'submit'
  13.    '#value' => 'upload'
  14.    '#submit' => array('upload_image'), 
  15.    '#ajax'=> array( 
  16.       'callback'=>'upload_image'
  17.       'wrapper'=> 'im-area'
  18.       'method'=> 'replace'
  19.       'effect'=> 'fade'
  20.    ), 
  21. ); 
  22. return $form; 
  23.  
  24. function upload_image($form, $form_state){ 
  25.  
  26. $file = file_save_upload('image_file', array('file_validate_extensions' => array('png gif jpg jpeg')), "public://",$replace = FILE_EXISTS_REPLACE); 
  27. if ($file) 
  28.     $file->status=FILE_STATUS_PERMANENT; 
  29.     file_save($file); 
  30.     $form['im-container']=array( 
  31.         '#title'=>t('Preview:'), 
  32.         '#prefix'=>'<div id="im-area">'
  33.         '#markup'=>'<img src="sites/default/files/'.$file->filename.'" height="250" width="250" />'
  34.         '#suffix'=>'</div>'
  35.     ); //Vevb.com 
  36. else { 
  37.     drupal_set_message('No file uploaded.'); 
  38.  
  39. return $form['im-container']; 

方法2:直接使用 manage_file 原件實現(xiàn):

上面的方式是需要配一個上傳按鈕,然而在drupal 7 有一個更好的表單原件 manage_file,可以通過manage_file實現(xiàn)無刷新上傳.

  1. $form['image_example_image_fid'] = array( 
  2.   '#title' => t('<a href="/project/image" class="alinks-link" title="模塊介紹:讓有特定權(quán)限的用戶可以上傳圖片到網(wǎng)站里,并且會自動產(chǎn)生縮圖。圖片可以使用在文章里(例如透過tinymce編輯工具進行選取),或是作成簡單的網(wǎng)絡相簿。">Image</a>'), 
  3.   '#type' => 'managed_file'
  4.   '#description' => t('The uploaded image will be displayed on this page using the image style choosen below.'), 
  5.   '#default_value' => variable_get('image_example_image_fid'''), 
  6.   '#upload_location' => 'public://image_example_images/'
  7. ); 

方法3:使用manage_file 原件 配合js 實現(xiàn)不需要點擊上傳按鈕直接上傳:

上面兩種方式都可以實現(xiàn)無刷新上傳,但界面并不友好,兩種方式都是需要點擊上傳按鈕才觸發(fā)上傳,我們更多時候是不想有上傳按鈕,下面這個方式就可以做到:

  1. File: auto_upload.info 
  2.  
  3. name = Auto Upload 
  4. description = Removes the need for users to press the 'Upload' button for AJAX file uploads. 
  5. core = 7.x 
  6. dependencies[] = file 
  7.  
  8.  
  9. File: auto_upload.js: 
  10.  
  11.  
  12. (function ($) { 
  13.   Drupal.behaviors.autoUpload = { 
  14.     attach: function (<a href="/project/context" class="alinks-link" title="模塊介紹:就是“根據(jù)某些條件”顯示“某些區(qū)塊”">context</a>, settings) { 
  15.       $('form', context).delegate('input.form-file''change'function() {   
  16.         $(this).next('input[type="submit"]').mousedown(); 
  17.       });  
  18.     } 
  19.   }; 
  20. })(jQuery); 
  21.  
  22.  
  23. File: auto_upload.module 
  24.  
  25.  
  26. function auto_upload_init() { 
  27.   drupal_add_js(drupal_get_path('module''auto_upload') . '/auto_upload.js'); 

我們還可以再優(yōu)化下,讓上傳圖片時候,顯示縮略圖:

  1. <?php 
  2. /** 
  3.  * Implements hook_field_widget_form(). 
  4.  */ 
  5. function multifield_field_widget_form(&$form, &$form_state$field$instance$langcode$items$delta$element) { 
  6.  
  7.   //Get the default format for user 
  8.   $default_format  = array_shift(filter_formats($GLOBALS['user']))->format; 
  9.  
  10.   $field_name = $instance['field_name']; 
  11.  
  12.   $item =& $items[$delta]; 
  13.  
  14.   switch($instance['widget']['type']) { 
  15.  
  16.     case 'multifield_base_widget'
  17.       $element['img1_upload'] = array
  18.         '#title' => t('Image'), 
  19.         '#type' => 'managed_file'
  20.         '#upload_location' => 'public://multifield_images/'
  21.         '#default_value' => isset($item['img1_upload']) ? $item['img1_upload'] : 0, 
  22.         // assign #theme directly to the managed_file in other case it won't be 
  23.         // rebuilt after file upload 
  24.         '#theme' => 'image_multifield_multitype'
  25.       ); 
  26.   } 
  27.   return $element
  28.  
  29. /** 
  30.  * Implements hook_theme(). 
  31.  */ 
  32. function multifield_theme() { 
  33.   return array
  34.     'image_multifield_multitype' => array
  35.       'render element' => 'element'
  36.     ), 
  37.   ); 
  38.  
  39. /** 
  40.  * Returns HTML for a managed file element with thumbnail. 
  41.  */ 
  42. function theme_image_multifield_multitype($variables) { 
  43.   $element = $variables['element']; 
  44.  
  45.   $output = ''
  46.  
  47.  
  48.   if($element['fid']['#value'] != 0) { 
  49.     // if image is uploaded show its thumbnail to the output HTML 
  50.     $output .= '<div class="multifield-thumbnail">'
  51.     //$output .= theme('image_style', array('style_name' => 'thumbnail', 'path' => file_load($element['fid']['#value'])->uri, 'getsize' => FALSE)); 
  52.     $output .= '<img src="' . image_style_url('medium', file_load($element['fid']['#value'])->uri). '" class="thumbnail"/>'
  53.     $output .= drupal_render_children($element); // renders rest of the element as usual 
  54.     $output .= '</div>'
  55.   } 
  56. return $output// of course, has to be returned back 
  57.   } 
  58. ?> 

方法4:用第三方模塊

還有一種方式比較簡單直接,就是直接用第三方模塊,例如Drag & Drop Upload 模塊,就能實現(xiàn)無刷新上傳,并且還支持拖拽,挺好的.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
二区三区中文字幕| 精品全国在线一区二区| 亚洲图区综合| 亚洲妇熟xxxx妇色黄| 精品视频vs精品视频| 国产不卡精品一区二区三区| 国产天堂视频| 精品美女在线观看视频在线观看| 久久久久久久久亚洲精品| 国产在线看片| 国产精品18久久久久久久久久| 国产精品免费视频二三区| 国产女主播在线观看| 在线免费观看你懂的| 久久91精品视频| 国产成人精品实拍在线| 免费看av大片| 精品国产丝袜高跟鞋| 欧美专区日韩| 91高清国产| 最近中文av字幕在线中文| 在线午夜视频| 1区2区视频| 亚洲国产日韩成人综合天堂| 99视频免费| 欧美亚洲天堂| 在线免费黄色毛片| 午夜视频在线看| 日韩在线天堂| 伊人资源视频在线| 国产福利在线| 国产视频二区在线观看| 欧美成人亚洲高清在线观看| 9999在线视频| 午夜免费福利在线观看| 亚洲欧美小说国产图片| 18av在线视频| 国产精品入口麻豆免费| 久久久久久91精品色婷婷| 在线观看wwww| av大片在线播放| 97国产在线| 亚洲久草视频| 亚洲sss视频| av在线电影观看| www.蜜桃av| 黄色一级视频网站| 国产精品自产拍在线网站| 亚洲精品自拍区在线观看| 一区免费观看| 日本精品一区二区三区在线播放| 伊人影院在线视频| 亚洲欧美日韩成人网| 国产成人亚洲欧美电影| 国产极品嫩模在线视频一区| 国产日韩精品在线看| 国产精品久久久精品a级小说| 国产一级在线观看www色| 国产亚洲依依| 91视频久色| www.色婷婷| 99热最新网址| 亚洲男人网站| 国产美女被遭强高潮免费网站| 黄色网页网址在线免费| 中文字幕在线免费观看| 国产午夜视频在线观看| 在线免费观看黄色av| av中文在线| 黄色av电影在线播放| 国产一级影片| 亚洲欧洲成人| 天天操人人干| 在线āv视频| 国产在线第一页| 精品日韩av| 成年网在线观看免费观看网址| 国产丝袜在线| 青青草视频在线免费观看| 中文字幕在线播放网址| 日本亚洲欧美| 91国内在线| 国产鲁鲁视频在线观看免费| 国产精品久久久精品a级小说| 亚洲精品自拍区在线观看| 成人av小说网| 亚洲高清在线免费| 国产精品18久久久久网站| sese在线视频| 精品99又大又爽又硬少妇毛片| 九九在线观看免费视频| 伊人免费视频| 91www在线观看| 国产精品久久麻豆| 综合图区亚洲白拍在线| 精品一区二区在线欧美| 国产精品久久麻豆| 国产天堂在线| 欧美日韩一区二区三区在线播放| 国产高清在线观看| 国产精品18久久久久网站| 国产男女av| 黄色三级视频在线观看| 久草国产视频| 日本黄在线观看| 成 人免费视频播放| 国产中文伊人| 国产乱xxⅹxx国语对白| 中文字幕久热在线精品| 国产一级免费| 国产欧美日韩第一页| 国产黄a三级三级三级av在线看| 国产亚洲精品久久久久久移动网络 | 国产在线日本| 好男人免费精品视频| 99视频在线观看地址| 国产精品视频一区二区免费不卡| 国产探花视频在线观看| 69日小视频在线观看| 四虎国产精品永久地址998| 四虎国产精品永久在线| 欧美亚洲另类在线观看| 国产中文字幕在线观看| 国产九色porn网址| 99久热re在线精彩视频| 香蕉视频网站在线观看| 男人天堂网在线观看| 国产精品日日爱| 亚洲视频精品在线观看| 国产理论在线观看| 中文字幕av在线| 成人欧美精品久久久久影院| 91这里只有精品| 就爱干草视频| 国产黄在线播放| 麻豆电影传媒二区| 国产午夜三区视频在线| 四虎成年永久免费网站| 天天操夜夜添| 国产丝袜在线观看视频| а√最新版地址在线天堂| 国产黄色免费看| 国产在线观看网站| 在线伊人免费视频| 国产免费av网站| 四虎网站在线观看| 91香蕉视频免费在线观看| 99热最新网址| 狠狠操天天操夜夜操| 伊人久久青青草| 91社区在线观看| 国产不卡一卡2卡三卡4卡5卡在线| 麻豆精品视频入口| 99re热在线观看| 91午夜在线| 精精国产xxxx视频在线中文版| 天天操天天射天天色| 五月婷婷开心综合| 国产羞羞视频在线播放| 国产乱码在线| 国产写真视频在线观看| 高清欧美精品xxxxx在线看| 男人操女人免费网站| 欧美午夜电影一区二区三区| av手机免费在线观看| 在线观看国产视频| 亚洲综合在线不卡| av中文网站| 亚洲男人网站| 青青草免费在线视频| 免费在线超碰| 福利在线视频导航| 国产精品福利视频一区二区三区| 国产黄色网页| 亚洲日本一区二区三区在线观看| 日本一本久久| 国产在线播放av| 尤物网址在线观看| 国产成a人亚洲精v品| 亚洲视频在线网| 激情综合丁香| 国产日韩欧美第一页| 亚洲一本大道| 久久av少妇| 国产网站在线播放| av高清资源| 国产中文字幕av| 国产三级在线免费| av在线二区| 国产区视频在线观看| av在线播放av| 国产一卡2卡3卡4卡网站免费| 91极品在线| 国产主播色在线| 在线中文av| 成年午夜在线| a级在线观看| 国产精品入口麻豆电影| 精品国产免费第一区二区| 高潮白浆视频|