下面通过一段代码给大家演示下,主要分为1.前台文件index.html和 2.后台文件upload.php。具体代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
1.前台文件index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <html xmlns= "http://www.w3.org/1999/xhtml" > <meta http-equiv= "Content-Type" content= "text/html; charset=gb2312" /> <head> <title>SWFUpload</title> <link href= "css/default.css" rel= "stylesheet" type= "text/css" /> <!--Swfupload插件begin--> <script type= "text/javascript" src= "swfupload/swfupload.js" ></script> <script type= "text/javascript" src= "js/swfupload.queue.js" ></script> <script type= "text/javascript" src= "js/fileprogress.js" ></script> <script type= "text/javascript" src= "js/handlers.js" ></script> <!--Swfupload插件 end --> <script type= "text/javascript" > var swfu; window.onload = function () { var settings = { flash_url : "swfupload/swfupload.swf" , upload_url: "upload.php" , // 后台文件 post_params: { "PHPSESSID" : "<?php echo session_id(); ?>" }, file_size_limit : "100 MB" , file_types : "*.*" , file_types_description : "All Files" , file_upload_limit : 100, file_queue_limit : 0, custom_settings : { progressTarget : "fsUploadProgress" , cancelButtonId : "btnCancel" }, debug: false, // 按钮设置 button_image_url: "images/TestImageNoText_65x29.png" , // Flash样式图片文件 button_width: "65" , button_height: "29" , button_placeholder_id: "spanButtonPlaceHolder" , button_text: '<span class="theFont">浏览</span>' , button_text_style: ".theFont { font-size: 16; }" , button_text_left_padding: 12, button_text_top_padding: 3, // 句柄设置 file_queued_handler : fileQueued, file_queue_error_handler : fileQueueError, file_dialog_complete_handler : fileDialogComplete, upload_start_handler : uploadStart, upload_progress_handler : uploadProgress, upload_error_handler : uploadError, upload_success_handler : uploadSuccess, upload_complete_handler : uploadComplete, queue_complete_handler : queueComplete }; swfu = new SWFUpload(settings); }; </script> </head> <body> <div id= "header" > <h1 id= "logo" ><a href= "/" >SWFUpload</a></h1> <div id= "version" >v2.2.0</div> </div> <div id= "content" > <form id= "form1" action= "index.php" method= "post" enctype= "multipart/form-data" > <p>点击“浏览”按钮,选择您要上传的文档文件后,系统将自动上传并在完成后提示您。</p> <p>请勿上传包含中文文件名的文件!</p> <div class = "fieldset flash" id= "fsUploadProgress" > <span class = "legend" >快速上传</span> </div> <div id= "divStatus" >0 个文件已上传</div> <div> <span id= "spanButtonPlaceHolder" ></span> <input id= "btnCancel" type= "button" value= "取消所有上传" onclick= "swfu.cancelQueue();" disabled= "disabled" style= "margin-left: 2px; font-size: 8pt; height: 29px;" /> </div> </form> </div> <div align= "center" >Hanization By <a href= "http://imll.net" target= "_blank" >Leo.C,</a> </div> </body> </html> |
2.后台文件upload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
<?php // 传递session值(由于Flash与session不兼容,只能通过参数传递获取) if (isset( $_POST [ "PHPSESSID" ])) { session_id( $_POST [ "PHPSESSID" ]); } else if (isset( $_GET [ "PHPSESSID" ])) { session_id( $_GET [ "PHPSESSID" ]); } session_start(); // 设置POST最大值 $POST_MAX_SIZE = ini_get ( 'post_max_size' ); $unit = strtoupper ( substr ( $POST_MAX_SIZE , -1)); $multiplier = ( $unit == 'M' ? 1048576 : ( $unit == 'K' ? 1024 : ( $unit == 'G' ? 1073741824 : 1))); if ((int) $_SERVER [ 'CONTENT_LENGTH' ] > $multiplier *(int) $POST_MAX_SIZE && $POST_MAX_SIZE ) { header( "HTTP/1.1 500 Internal Server Error" ); echo "POST exceeded maximum allowed size." ; exit (0); } // 基本设置 $save_path = getcwd () . "/file/" ; // 文件上传位置 $upload_name = "Filedata" ; $max_file_size_in_bytes = 2147483647; // 2GB $extension_whitelist = array ( "doc" , "txt" , "jpg" , "gif" , "png" ); // 允许文件类型 $valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-' ; // 文件名规则 // 其他变量 $MAX_FILENAME_LENGTH = 260; $file_name = "" ; $file_extension = "" ; $uploadErrors = array ( 0=> "文件上传成功" , 1=> "上传的文件超过了 php.ini 文件中的 upload_max_filesize directive 里的设置" , 2=> "上传的文件超过了 HTML form 文件中的 MAX_FILE_SIZE directive 里的设置" , 3=> "上传的文件仅为部分文件" , 4=> "没有文件上传" , 6=> "缺少临时文件夹" ); // 检测文件是否上传正确 if (!isset( $_FILES [ $upload_name ])) { HandleError( "No upload found in \$_FILES for " . $upload_name ); exit (0); } else if (isset( $_FILES [ $upload_name ][ "error" ]) && $_FILES [ $upload_name ][ "error" ] != 0) { HandleError( $uploadErrors [ $_FILES [ $upload_name ][ "error" ]]); exit (0); } else if (!isset( $_FILES [ $upload_name ][ "tmp_name" ]) || !@ is_uploaded_file ( $_FILES [ $upload_name ][ "tmp_name" ])) { HandleError( "Upload failed is_uploaded_file test." ); exit (0); } else if (!isset( $_FILES [ $upload_name ][ 'name' ])) { HandleError( "File has no name." ); exit (0); } // 检测文件尺寸 $file_size = @ filesize ( $_FILES [ $upload_name ][ "tmp_name" ]); if (! $file_size || $file_size > $max_file_size_in_bytes ) { HandleError( "File exceeds the maximum allowed size" ); exit (0); } if ( $file_size <= 0) { HandleError( "File size outside allowed lower bound" ); exit (0); } // 检测文件名字为空 $file_name = preg_replace( '/[^' . $valid_chars_regex . ']|\.+$/i' , "" , basename ( $_FILES [ $upload_name ][ 'name' ])); if ( strlen ( $file_name ) == 0 || strlen ( $file_name ) > $MAX_FILENAME_LENGTH ) { HandleError( "Invalid file name" ); exit (0); } // 检测重名文件 if ( file_exists ( $save_path . $file_name )) { HandleError( "File with this name already exists" ); exit (0); } // 检测后缀名 $path_info = pathinfo ( $_FILES [ $upload_name ][ 'name' ]); $file_extension = $path_info [ "extension" ]; $is_valid_extension = false; foreach ( $extension_whitelist as $extension ) { if ( strcasecmp ( $file_extension , $extension ) == 0) { $is_valid_extension = true; break ; } } if (! $is_valid_extension ) { HandleError( "Invalid file extension" ); exit (0); } // 保存文件 if (!@move_uploaded_file( $_FILES [ $upload_name ][ "tmp_name" ], $save_path . $file_name )) { HandleError( "文件无法保存." ); exit (0); } // 成功输出 echo "File Received" ; exit (0); function HandleError( $message ) { header( "HTTP/1.1 500 Internal Server Error" ); echo $message ; } ?> |
以上代码就是实现文件上传之SwFUpload插件的全部内容,希望大家喜欢。