博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

多文件上传[Flash]

Posted on 2011-01-06 19:52  PHP-张工  阅读(9042)  评论(44编辑  收藏  举报

重新修改了以前的多文件上传,加入了JPG图片压缩功能!

概述

Flash多文件上传,提供JPG图片压缩选项。显示文件上传进度!

Flash参数说明

标识名称是否必填默认值取值范围说明
serverUrl 服务器响应地址 必填     服务器端接收文件上传的处理页面
jsFunction 回调JS函数 选填     回调的JS函数
filter 文件格式 选填 *.*   默认所有文件
多种文件格式可用;分割
maxFileCount 一次可最多上传文件数 选填 0 0<=数值 当为0时没有限制
maxFileSize 单文件大小限制 选填 0 0<=数值 单位为字节
为0时没有限制
imageWidth JPG图片压缩宽度 选填 0 0<=数值<=2000 为0时宽度不缩放
imageHeight JPG图片压缩高度 选填 0 0<=数值<=2000 为0时高度不缩放
imageQuality JPG图片压缩质量 选填 80 1<=数值<=100 数值越大质量越高,但文件会越大
uploadText 上传按钮文本 选填 上 传    
cancelText 取消按钮文本 选填 取 消    
labelFormat 上传时文本提示 选填     例如:已上传{%}

说明:

  • 当imageWidth和imageHeight都为0时,不对JPG图片进行任何缩放,将直接上传原始图片!
  • 当imageWidth或imageHeight任意一个值不为0时,则对JPG图片进行缩放操作。
  • 上传时文本提示默认为:{%} {uploadSize}/{allSize} [{fileIndex}/{fileCount}] {fileSize} {fileName}
    {%} 表示当前上传百分比
    {uploadSize} 已上传的总文件大小
    {allSize} 需要上传的总文件大小
    {fileIndex} 当前正上传第几个文件
    {fileCount} 文件总数
    {fileSize} 当前上传的文件大小
    {fileName} 当前上传的文件名称

Flash提供的接口函数

setPara 设置上传参数。setPara(参数标识,值) 

返回值:true设置成功。false设置失败!当上传时不允许设置。 

isBusy 返回当前Flash是否正在上传。返回值:true正在上传。false空闲。

JS函数接口

参数:type, str type 类型 str 信息

type类型str值说明
error 错误信息 当发生错误时触发
upload_cancel 用户取消了上传 当上传时用户点击取消按钮时触发
upload_start 需要上传的文件数|文件总大小 当用户选择文件后开始上传时触发
upload_file_complete 服务器返回信息 单个文件上传成功时触发
upload_complete 服务器返回的所有信息合集,使用|分割 所有文件上传成功时触发
upload_progress 上传进度信息 上传进度变化时触发

注意:因为可上传的文件扩展名可通过JS修改,所以需要在服务器端后台验证文件扩展名是否正确!

实例及源码下载:https://files.cnblogs.com/zjfree/mFileUpload.rar

后记:

2011-12-20 上传一个小图片,后上传一个大图片,大图片就不压缩问题,已经修复。欢迎提出问题!

2011-12-21 在批量上传时,不会触发upload_complete过程。脚本无法判断是否上传完成。 问题已修复。

 

2015-05-16

PHP版后台文件接收代码如下:

<?php

$file_name = date('Ymd') . '_' . time() . '_' . mt_rand(1, 1000) . '.jpg';
$file_path = '/img/user_img/' . date('Y_m') . '/';
$dir =  dirname(__FILE__) . $file_path;

//创建目录失败
@mkdir($dir, 0777, true);

$img_path = $dir . $file_name;
$img_url  = 'http://' . $_SERVER["HTTP_HOST"] . $file_path . $file_name;

if (count($_FILES) > 0)
{
    $f = current($_FILES);
    
    move_uploaded_file($f["tmp_name"], $img_path);
}
else
{
    $rawpostdata = file_get_contents("php://input"); 
    
    $myfile = fopen($img_path, "w") or die("Unable to open file!");
    fwrite($myfile, $rawpostdata);
    fclose($myfile);
}

echo $img_url;