sae storage 使用uploadify插件进行文件批量上传

uploadify插件在文件上传方面还是很不错的,这不我需要往sae 的storage上上传文件,就用了它。
下面我就分享一下如何实现的吧。
我们先到官网下载最新的uploadify最新的插件包。
在页面中引用以下必须js/css文件,注意uploadify是基于Jquery的所以必须在之前引用一下Jquery包。

<link rel='stylesheet' href='../script/uploadify/uploadify.css?v=2' type='text/css' />
<script type="text/javascript" src="../script/uploadify/jquery.min.js"></script>
<script type="text/javascript" src="../script/uploadify/jquery.uploadify.min.js"></script>

页面中定义上传的容器

<div id="file_upload"></div>

然后创建上传插件

$('#file_upload').uploadify({
                'onSelect' : function(file){
                },
                'formData': {
                    'token':'<?php echo $token; ?>', //token
                    'userid':'<?php echo $current_user->ID; ?>',
                    'email':'<?php echo $current_user->user_email; ?>'
                },
                'removeCompleted':false,
                'buttonText'  : '选择文件',
                'swf'      : '../script/uploadify/uploadify.swf',
                'uploader' : 'http://codeo.cn/wp-content/themes/xiu-new/pages/co_upload.php',
                'method'   : 'POST',
                'fileObjName':'imgFile',
                'queueID':'queue',
                'fileSizeLimit':'200k',
                'onUploadSuccess' : function(file, data, response) {
                    data=eval("("+data+")");
                    if(data.s){
                        $("#"+file.id).find(".data").html("-完成");
                        var cancel=$('#'+file.id).find(".cancel a");
                        if (cancel) {
                           cancel.attr("rel", data);
                           cancel.click(function () {
                                //删除文件及数据
                           });
                        }
                    }else{
                        $("#"+file.id).find(".data").html("失败:"+data.m);
                    }
                    
                 },
                 'onCancel':function(file){
                    
                 }
                 ,'overrideEvents': ['onSelectError', 'onDialogClose'],
                //返回一个错误,选择文件的时候触发
                'onSelectError': function (file, errorCode, errorMsg) {
                    switch (errorCode) {
                        case -100:
                            alert("上传的文件数量已经超出系统限制的" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + "个文件!");
                            break;
                        case -110:
                            alert("文件 [" + file.name + "] 大小超出系统限制的" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + "大小!");
                            break;
                        case -120:
                            alert("文件 [" + file.name + "] 大小异常!");
                            break;
                        case -130:
                            alert("文件 [" + file.name + "] 类型不正确!");
                            break;
                    }
                    return true;
                },
                //检测FLASH失败调用
                'onFallback': function () {
                    alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
                }
            });

介绍一下uploadify相关参数

  • formData:可以填写要传递的参数,以供后台使用;
  • uploader:后台处理文件
  • overrideEvents:重写事件,以便于自定义提示
  • onSelectError:错误提示重写
  • onUploadSuccess:每个文件成功后执行的事件,在这里我们可以绑定uploadify的取消按钮的点击事件,实现uploadify的真删除

sae 后台是如何接收uploadify参数进行处理

<?php 
//允许的文件后缀
$fileTypes = array('jpg','jpeg','gif','png');
if (!empty($_FILES)) {
    //得到上传的临时文件流
    $tempFile = $_FILES['imgFile']['tmp_name'];
    //得到文件原名
    $fileName = $_FILES["imgFile"]["name"];//iconv("UTF-8","GB2312",$_FILES["imgFile"]["name"]);
    
    
    $fileName=strFilter($fileName);
    //扩展名
    $temp_arr = explode(".", $fileName);  
    $file_ext = array_pop($temp_arr);  
    $file_ext = trim($file_ext);  
    $file_ext = strtolower($file_ext);  
    
if (in_array($file_ext, $fileTypes) === false) {  
      echo "2";  
exit;  
}
        //传值 本次唯一id
        $tank=$_POST['token'];
        $userid=$_POST['userid'];
    $email=$_POST['email'];
    
    $file_dir=date("Y/m/d").'/';

    $storage = new SaeStorage();
    $domain = 'codeku';
    $destFileName = $file_dir.create_guid().'_'.$fileName;
    $srcFileName = $tempFile;
    //$attr = array('encoding'=>'gzip');
    $result = $storage->upload($domain,$destFileName, $srcFileName);
    if(!$result) {  
        echomsg('false','文件上传失败!');
        exit;
    }
    if($result){
        //也可以插入数据库等操作
    }
    echomsg('true','操作成功!'.$destFileName.$fileName);
}
?>

sae 保存文件核心方法是

$result = $storage->upload($domain,$destFileName, $srcFileName);

接收uploadifyformDatapost数据方式$_POST['token'];

转载于:https://www.cnblogs.com/huhangfei/p/4989238.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值