Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95558
  • 博文数量: 109
  • 博客积分: 3411
  • 博客等级: 中校
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 09:04
文章分类

全部博文(109)

文章存档

2011年(109)

分类: 系统运维

2011-05-03 12:55:29

源代码

?php
$upload_dir = "/var/www/anyexample/aeu"; //
文件存储的路径
$web_upload_dir = "/aeu"; //
文件在Web目录下的路径
$tf = $upload_dir.'/'.md5(rand()).".test";
$f = @fopen($tf, "w");
if ($f == false)
die("Fatal error! {$upload_dir} is not writable. Set 'chmod 777 {$upload_dir}'
or something like this");
fclose($f);
unlink($tf);

//
处理上传的文件
if (isset($_POST['fileframe']))
{
 $result = 'ERROR';
 $result_msg = 'No FILE field found';

 if (isset($_FILES['file'])) // 从浏览器接受文件
 {
  if ($_FILES['file']['error'] == UPLOAD_ERR_OK) // 没有错误
  {
   $filename = $_FILES['file']['name']; // 文件名
   move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir.'/'.$filename);
   // 处理的主过程-转移文件到 $upload_dir
   $result = 'OK';
  }
  elseif ($_FILES['file']['error'] == UPLOAD_ERR_INI_SIZE)
   $result_msg = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
  else
   $result_msg = 'Unknown error';
 }

 echo 'html><head><title-/title></head><body';
 echo 'script language="JavaScript" type="text/javascript"'."\n";
 echo 'var parDoc = window.parent.document;';
 '
 if ($result == 'OK')
 {
  echo 'parDoc.getElementById("upload_status").value = "file successfully uploaded";';
  echo 'parDoc.getElementById("filename").value = "'.$filename.'";';
  echo 'parDoc.getElementById("filenamei").value = "'.$filename.'";';
  echo 'parDoc.getElementById("upload_button").disabled = false;';
 }
 else
 {
  echo 'parDoc.getElementById("upload_status").value = "ERROR: '.$result_msg.'";';
 }

 echo "\n".'/script></body></html';
 exit();
}

function safehtml($s)
{
 $s=str_replace("&", "&", $s);
 $s=str_replace("", "<", $s);
 $s=str_replace("", ">", $s);
 $s=str_replace("'", "'", $s);
 $s=str_replace("\"", """, $s);
 return $s;
}

if (isset($_POST['description']))
{
 $filename = $_POST['filename'];
 $size = filesize($upload_dir.'/'.$filename);
 $date = date('r', filemtime($upload_dir.'/'.$filename));
 $description = safehtml($_POST['description']);

 $html =<<<END
 <html><head><title{$filename} [uploaded by IFRAME Async file uploader]/title></head
 <body
  <h1{$filename}/h1
  <pThis is a file information page for your uploaded file. Bookmark it, or send to anyone.../p
  <pDate: {$date}/p
  <pSize: {$size} bytes/p
  <pDescription:
  <pre{$description}/pre
  </p
  <p><a href="{$web_upload_dir}/{$filename}" style="font-size: large;"download file/a><br
  <a href="{$PHP_SELF}" style="font-size: small;"back to file uploading/a><br
  <a href="{$web_upload_dir}/upload-log.html" style="font-size: small;"upload-log/a></p
  <br><brExample by a href=""AnyExample/a
 </body></html
 END;
 
 $f = fopen($upload_dir.'/'.$filename.'-desc.html', "w");
 fwrite($f, $html);
 fclose($f);
 $msg = "File {$filename} uploaded,
 <a href='{$web_upload_dir}/{$filename}-desc.html'see file information page/a";

 $f = fopen($upload_dir."/upload-log.html", "a");
 fwrite($f, "p$msg/p\n");
 fclose($f);

 setcookie('msg', $msg);
 header("Location: http://".$_SERVER['HTTP_HOST'].$PHP_SELF);
 exit();
}

if (isset($_COOKIE['msg']) && $_COOKIE['msg'] != '')
{
 if (get_magic_quotes_gpc())
  $msg = stripslashes($_COOKIE['msg']);
 else
  $msg = $_COOKIE['msg'];
  setcookie('msg', '');
}
?

!-- Beginning of main page --
html><head
titleIFRAME Async file uploader example/title
/head
body
?php
 if (isset($msg))
  echo 'p style="font-weight: bold;"'.$msg.'/p';
?

h1Upload file:/h1
pFile will begin to upload just after selection. /p
pYou may write file description, while you file is being uploaded./p

form action="?=$PHP_SELF?" target="upload_iframe" method="post" enctype="multipart/form-data"
 <input type="hidden" name="fileframe" value="true"
 <!-- Target of the form is set to hidden iframe --
 <!-- From will send its post data to fileframe section of this PHP script (see above) --

 <label for="file"text file uploader:/label><br
 <!-- JavaScript is called by OnChange attribute --
 <input type="file" name="file" id="file" onChange="jsUpload(this)"
/form
script type="text/javascript"
/* This function is called when user selects file in file dialog */
function jsUpload(upload_field)
{
 // this is just an example of checking file extensions
 // if you do not need extension checking, remove
 // everything down to line
 // upload_field.form.submit();
 
 var re_text = /\.txt|\.xml|\.zip/i;
 var filename = upload_field.value;

 /* Checking file type */
 if (filename.search(re_text) == -1)
 {
  alert("File does not have text(txt, xml, zip) extension");
  upload_field.form.reset();
  return false;
 }

 upload_field.form.submit();
 document.getElementById('upload_status').value = "uploading file...";
 upload_field.disabled = true;
 return true;
}
/script
iframe name="upload_iframe" style="width: 400px; height: 100px; display: none;"
/iframe
!-- For debugging purposes, it's often useful to remove
"display: none" from style="" attribute --


br
Upload status:
br
input type="text" name="upload_status" id="upload_status"
value="not uploaded" size="64" disabled

br><br

File name:
br
input type="text" name="filenamei" id="filenamei" value="none" disabled

form action="?=$PHP_SELF?" method="POST"
 <!-- one field is "disabled" for displaying-only. Other, hidden one is for sending data --
 <input type="hidden" name="filename" id="filename"
 <br><br

 <label for="photo"File description:/label><br
 <textarea rows="5" cols="50" name="description"></textarea

 <br><br
 <input type="submit" id="upload_button" value="save file" disabled
/form
br><br
a href="?=$web_upload_dir?/upload-log.html"upload-log/a
br><br><br

Example by
a href=""AnyExample/a
/body
/html


  以上的讲解就是提供一种思路供大家参考。大家也可以根据自己的需求进行相应的优化。

阅读(379) | 评论(0) | 转发(0) |
0

上一篇:PHP+AJAX实现异步上传功能

下一篇:java AOP

给主人留下些什么吧!~~