Uploading photos with socket

Posted on 2006-04-19
Last Modified: 2006-11-18
Can I use php socket to upload files from a visitors' local machine to my server ?

What I am trying to do is i have a large file that needs to be uploaded , I would like it to be uploaded in the background of the site to allow my visitor to continue doing other things while the file is uploaded .
Is that possible with php?   (doesn't need to be socket i was just thinking it might work with that although as far as i understand there is no multy threading in php)
Question by:nysurf1
    1 Comment
    LVL 5

    Accepted Solution

    //   You may change maxsize, and allowable upload file types.
    //Mmaximum file size. You may increase or decrease.
    $MAX_SIZE = 2000000;
    //Allowable file ext. names. you may add more extension names.            
    $FILE_EXTS  = array('.zip','.jpg','.png','.gif','.doc');

    //Allow file delete? no, if only allow upload only
    $DELETABLE  = true;                              

    //   Do not touch the below if you are not confident.
     *     Setup variables
    $site_name = $_SERVER['HTTP_HOST'];
    $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
    $url_this =  "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

    $upload_dir = "files/";
    $upload_url = $url_dir."/files/";
    $message ="";

     *     Create Upload Directory
    if (!is_dir("files")) {
      if (!mkdir($upload_dir))
            die ("upload_files directory doesn't exist and creation failed");
      if (!chmod($upload_dir,0755))
            die ("change permission to 755 failed.");

     *     Process User's Request
    if ($_REQUEST[del] && $DELETABLE)  {
      $resource = fopen("log.txt","a");
      fwrite($resource,date("Ymd h:i:s")."DELETE - $_SERVER[REMOTE_ADDR]"."$_REQUEST[del]\n");
      if (strpos($_REQUEST[del],"/.")>0);                  //possible hacking
      else if (strpos($_REQUEST[del],$upload_dir) === false); //possible hacking
      else if (substr($_REQUEST[del],0,6)==$upload_dir) {
        print "<script>window.location.href='$url_this?message=deleted successfully'</script>";
    else if ($_FILES['userfile']) {
      $resource = fopen("log.txt","a");
      fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]"
                .$_FILES['userfile']['name']." "

      $file_type = $_FILES['userfile']['type'];
      $file_name = $_FILES['userfile']['name'];
      $file_ext = strtolower(substr($file_name,strrpos($file_name,".")));

      //File Size Check
      if ( $_FILES['userfile']['size'] > $MAX_SIZE)
         $message = "The file size is over 2MB.";
      //File Extension Check
      else if (!in_array($file_ext, $FILE_EXTS))
         $message = "Sorry, $file_name($file_type) is not allowed to be uploaded.";
         $message = do_upload($upload_dir, $upload_url);
      print "<script>window.location.href='$url_this?message=$message'</script>";
    else if (!$_FILES['userfile']);
          $message = "Invalid File Specified.";

     *     List Files
    $filelist = "";
    while ($file = readdir($handle)) {
       if(!is_dir($file) && !is_link($file)) {
          $filelist .= "<a href='$upload_dir$file'>".$file."</a>";
          if ($DELETABLE)
            $filelist .= " <a href='?del=$upload_dir".urlencode($file)."' title='delete'>x</a>";
          $filelist .= "<sub><small><small><font color=grey>  ".date("d-m H:i", filemtime($upload_dir.$file))
          $filelist .="<br>";

    function do_upload($upload_dir, $upload_url) {

          $temp_name = $_FILES['userfile']['tmp_name'];
          $file_name = $_FILES['userfile']['name'];
      $file_name = str_replace("\\","",$file_name);
      $file_name = str_replace("'","",$file_name);
          $file_path = $upload_dir.$file_name;

          //File Name Check
      if ( $file_name =="") {
            $message = "Invalid File Name Specified";
            return $message;

      $result  =  move_uploaded_file($temp_name, $file_path);
      if (!chmod($file_path,0777))
             $message = "change permission to 777 failed.";
        $message = ($result)?"$file_name uploaded successfully." :
                     "Somthing is wrong with uploading a file.";
      return $message;


       <font color=red><?=$_REQUEST[message]?></font>
       <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
         Upload File <input type="file" id="userfile" name="userfile">
         <input type="submit" name="upload" value="Upload">
       <br><b>My Files</b>
       <hr width=70%>
       <hr width=70%>
       <small><sup>Developed By
       <a style="text-decoration:none" href=""></a>
    if you want the user to be able to do otehr things jsut have the uplaod script popup a window on link click

    Featured Post

    How your wiki can always stay up-to-date

    Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
    - Increase transparency
    - Onboard new hires faster
    - Access from mobile/offline

    Join & Write a Comment

    I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
    Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this.Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it is …
    The viewer will learn how to count occurrences of each item in an array.
    The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

    731 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    15 Experts available now in Live!

    Get 1:1 Help Now