如何在codeigniter中集成swfupload

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在codeigniter中集成swfupload相关的知识,希望对你有一定的参考价值。

参考技术A   首先准备需要的文件, swfupload.js 以及 handlers.js 这两个文件。
  swfupload文件夹放在/js下。

  
1.首先我们创建一个controller
  <?

class Photo extends Controller


function Photo()

parent::Controller();


function index()

$this->load->view("photo");


?>
  然后为index方法创建一个视图,
  photo.php

<table width="98%" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#DDDDDD">
<form action="<?=site_url("admin/photo/save")?>" method="post" name="form1" enctype="multipart/form-data">
<tr>
<td width="18%" height="26" align="right" bgcolor="#FFFFFF">上传图片:</td>
<td width="82%" align="left" bgcolor="#FFFFFF"><div style="display: inline; border: solid 1px #7FAAFF; background-color: #C5D9FF; padding: 2px;"> <span id="spanButtonPlaceholder"></span> </div></td>
</tr>
<tr>
<td height="26" align="right" bgcolor="#FFFFFF"></td>
<td align="left" bgcolor="#FFFFFF"><div id="divFileProgressContainer" style="height: 75px;"></div>
<div id="thumbnails"></div></td>
</tr>
</form>
</table>
<style>
#thumbnails width:550px;
</style>

<script type="text/javascript" src="/js/swfupload/swfupload.js"></script>
<script type="text/javascript" src="/js/swfupload/handlers.js"></script>
<script type="text/javascript">
var swfu;
window.onload = function ()
swfu = new SWFUpload(
// Backend Settings
upload_url: "/admin/photo/previw",
post_params: "PHPSESSID": "<?php echo session_id(); ?>",

// File Upload Settings
file_size_limit : "8MB", // 2MB
file_types : "*.jpg;*.png;*.gif;",
file_types_description : "Image files",
//file_upload_limit : "0",

// Event Handler Settings - these functions as defined in Handlers.js
// The handlers are not part of SWFUpload but are part of my website and control how
// my website reacts to the SWFUpload events.
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,

// Button Settings
button_image_url : "/images/SmallSpyGlassWithTransperancy_17x18.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 180,
button_height: 18,
button_text : '<span class="button">Select Images <span class="buttonSmall">(8 MB Max)</span></span>',
button_text_style : '.button font-family: Helvetica, Arial, sans-serif; font-size: 12pt; .buttonSmall font-size: 10pt; ',
button_text_top_padding: 0,
button_text_left_padding: 18,
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
button_cursor: SWFUpload.CURSOR.HAND,

// Flash Settings
flash_url : "/js/swfupload/swfupload.swf",

custom_settings :
upload_target : "divFileProgressContainer"
,

// Debug Settings
debug: false
);
;
</script>
  注意upload_url 以及flash_url。还有swfupload.js,handlers.js的路径不要弄错了。然后页面上必须有这个:

<div id="divFileProgressContainer" style="height: 75px;"></div>
<div id="thumbnails"></div>

  参数中,upload_url指向了photo的privew方法
  所以我们还得继续修改photo类,添加一个privew方法,这个方法代码是做什么的呢?本文开头提到了是以那个demo为基础,在codeigniter中集成。

  我们看看demo中的代码是怎么写的:
  demo中,upload_url指向了upload.php,因此我们只需要将upload的代码复制到privew中去。此处就不贴出代码了。然后怎么返回最后的缩略图呢?

  看看 handlers.js ,其中有个自定义函数uploadSuccess,这个函数中间有这么一句话:

  addImage("thumbnail.php?id=" + serverData.substring(7));

  本例中,是将这里改为:
  addImage("/admin/photo/thumbnail/" + serverData.substring(7));

  因此继续修改photo类,添加一个thumbnail方法,将原来的thumbnail.php代码复制进去即可。

  最后完整的代码是这样的:

  <?

class Photo extends Controller

var $conf=array();
function Photo()

parent::Controller();

$this->conf["file"]['upload_path'] = './attachment/';
$this->conf["file"]['allowed_types'] = 'gif|jpg|png|jpeg';

$this->conf["img"]['image_library'] = 'gd2';
$this->conf["img"]['source_image'] ="";
$this->conf["img"]['create_thumb'] = false;
$this->conf["img"]['maintain_ratio'] = TRUE;
$this->conf["img"]['width'] = 800;
$this->conf["img"]['height'] = 600;



function index()


unset($_SESSION["files"]);
unset($_SESSION["file_info"]);

$this->load->view("admin/photo");



function previw()


if (isset($_POST["PHPSESSID"]))
session_id($_POST["PHPSESSID"]);


ini_set("upload_max_filesize","8M");

// Check the upload
if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0)

echo "ERROR:invalid upload";
exit(0);


//上传文件,并重新设定图片尺寸
$this->load->library('upload', $this->conf["file"]);

$this->upload->do_upload("Filedata");
$file=$this->upload->data();

$thumb=$file["file_path"]."$file["raw_name"]_thumb.jpg";
$_SESSION["files"][]=array("path"=>$file["full_path"],"raw_name"=>$file["raw_name"],"thumb"=>$thumb);
$this->conf["img"]['source_image'] = $file["full_path"];
$this->load->library('image_lib', $this->conf["img"]);
$this->image_lib->resize() ;

// Get the image and create a thumbnail
$img = imagecreatefromjpeg($_FILES["Filedata"]["tmp_name"]);
if (!$img)
echo "ERROR:could not create image handle ". $_FILES["Filedata"]["tmp_name"];
exit(0);


$width = imageSX($img);
$height = imageSY($img);

if (!$width || !$height)
echo "ERROR:Invalid width or height";
exit(0);


// Build the thumbnail
$target_width = 150;
$target_height = 150;
$target_ratio = $target_width / $target_height;

$img_ratio = $width / $height;

if ($target_ratio > $img_ratio)
$new_height = $target_height;
$new_width = $img_ratio * $target_height;
else
$new_height = $target_width / $img_ratio;
$new_width = $target_width;


if ($new_height > $target_height)
$new_height = $target_height;

if ($new_width > $target_width)
$new_height = $target_width;


$new_img = ImageCreateTrueColor(150, 150);
$white=imagecolorallocate($new_img,255,255,255);
if (!@imagefilledrectangle($new_img, 0, 0, $target_width-1, $target_height-1,$white))
echo "ERROR:Could not fill new image";
exit(0);


if (!@imagecopyresampled($new_img, $img, ($target_width-$new_width)/2, ($target_height-$new_height)/2, 0, 0, $new_width, $new_height, $width, $height))
echo "ERROR:Could not resize image";
exit(0);


if (!isset($_SESSION["file_info"]))
$_SESSION["file_info"] = array();


// Use a output buffering to load the image into a variable
ob_start();

//保存缩略图,并生成文件
imagejpeg($new_img,$thumb,100);
imagejpeg($new_img);

$imagevariable = ob_get_contents();
ob_end_clean();

$file_id = md5($_FILES["Filedata"]["tmp_name"] + rand()*100000);

$_SESSION["file_info"][$file_id] = $imagevariable;

echo "FILEID:" . $file_id; // Return the file id to the script


function thumbnail()

if (isset($_POST["PHPSESSID"]))
session_id($_POST["PHPSESSID"]);


session_start();

$image_id =$id=$this->uri->segment(4);

if ($image_id === false)
header("HTTP/1.1 500 Internal Server Error");
echo "No ID";
exit(0);


if (!is_array($_SESSION["file_info"]) || !isset($_SESSION["file_info"][$image_id]))
header("HTTP/1.1 404 Not found");
exit(0);


header("Content-type: image/jpeg") ;
header("Content-Length: ".strlen($_SESSION["file_info"][$image_id]));
echo $_SESSION["file_info"][$image_id];
exit(0);


function save()

if (count($_SESSION["files"]))
//save files....

else

show_error("你还木有上传任何图片吧?[<a href='javascript:history.go(-1)'>返回</a>]");





?>
  swfupload的upload_url指向了previw方法,在这个方法中,与原有的代码比较,稍加修改,加上了文件上传功能,以及从新设定图片大小,以及保存文件缩略图,并将上传的结果保存到$_SESSION["files"]中去。
  thumbnail方法主要是thumbnail.php的代码,略有修改。本回答被提问者和网友采纳

在codeigniter中集成skrill支付网关[关闭]

【中文标题】在codeigniter中集成skrill支付网关[关闭]【英文标题】:Integrate skrill payment gateway in codeigniter [closed] 【发布时间】:2020-09-24 21:52:22 【问题描述】:

我很难将 skrill 支付网关 集成到 codeigniter。虽然我搜索了很多并找到了有关其他支付网关(如 paypal、stripe 等)的信息,但我找不到任何有关 skrill 支付网关集成的有用信息。

我也看过 skrill 提供的手册,但无法真正理解。我在这个链接的 github 上找到了 skrill api:https://github.com/biju1984/skrill

我将 api 放在第三方文件夹中,现在我需要使用 skrill 网关表单。我不知道该怎么做。

请任何人推荐一种易于集成的库或流式集成。

【问题讨论】:

【参考方案1】:

第 1 步:

将skrill库文件放入你的项目libraries folder里面application folder

第 2 步:

将 skrill 库加载到您的控制器函数中:

$this->load->library('skrill_api');

如果库在文件夹中然后使用,请输入库的主文件夹名称:

$this->load->library('folder_name/skrill_api');

示例:如何为构造函数设置默认参数:

$parameters = [
    'user_email' => 'demo@demo.com',
    'secret_word' => 'secret word',
    'merchant_id' => 'this is sample id',
    'mqi' => 'this is sample mqi'
];
$this->load->library('skrill_api', $parameters);

第 3 步:

您可以使用 skrill api 使用像这样的 skrill 对象$this-&gt;skrill_api

示例:

/**
  * Used for creating the redirection URL for making payments
  *
  * @param array $args The parameters to be send to Skrill 
  * @param string $request_type The type of request charge / refund
  * @param string $sid The session id
  *
  */

// Pass your data in parameters
$response = $this->skrill_api->prepareRequest($args, $request_type, $sid);

注意:如果您在完成上述步骤后仍然遇到问题,您可以查看以下详细信息:

类名和文件/库名应该相同,并且以大写字母开头:

文件名: Skrill_api.php 类名: Skrill_api

更多详情请参考:

Skrill Home Integration Guide Skrill PHP Library Skrill PHP API Library File - skrill_api.php Also checkout *** Question by Someone One More library by ASHADUR ROB

【讨论】:

你所建议的我已经这样做了,直到 $parameters 和加载库 所以在用户点击后查看加载库后会发生什么? 我已经完成了 skrill 集成指南,但我无法遵循,所以为了简单起见,我来到了这个版式 点击结帐后,您可以将付款订单的详细信息传递到您的请求功能中,请参阅Step 3.. 现在对你来说很容易,只需将参数传递给这个函数的第一个参数prepareRequest,我已经在Step 3中解释过

以上是关于如何在codeigniter中集成swfupload的主要内容,如果未能解决你的问题,请参考以下文章

如何在 codeigniter 中集成 razorpay 支付网关

如何在codeigniter中集成swfupload

在 codeigniter 3 中集成碳库

在 codeigniter 中集成正常的 php 会话

在 codeigniter 中集成 gridster.js

在codeigniter中集成skrill支付网关[关闭]