Zugriff auf die temporären Dateien beim Upload

cm-sebastian

Grünschnabel
Hallo,

ich habe mir ein Uploadscript zusammengebastelt, das mir per Ajax und auf Grundlage der php_apc Extension einen Progressbalken darstellt. Das Ganze funktioniert soweit auch richtig gut, keine Frage.

Allerdings steh ich vor nem Problem, was ich anscheinend nicht lösen kann. Ich schaffe es einfach nicht, mir die Dateien auf meinen Server zu kopieren. Ich komm irgendwie nicht an die temporären Files ran.

Ich poste mal meinen Code hier, ich hoffe das es hilft. Weiterhin hänge ich alle js Dateien mit an, die ich für das Ding benötige.

Vielen Dank schonmal im Voraus.

PHP:
<?php
if($_SERVER['REQUEST_METHOD']=='POST') {
  $status = apc_fetch('upload_'.$_POST['APC_UPLOAD_PROGRESS']);
  $status['done']=1;
  echo json_encode($status);
  exit;
} else if(isset($_GET['progress_key'])) {
  $status = apc_fetch('upload_'.$_GET['progress_key']);
  echo json_encode($status);
  exit;
}
?>
<html>
<head>
<script type="text/javascript" src="js/yahoo.js"></script>
<script type="text/javascript" src="js/event.js"></script>
<script type="text/javascript" src="js/dom.js"></script>
<script type="text/javascript" src="js/animation.js"></script>
<script type="text/javascript" src="js/connection.js"></script>
<script type="text/javascript" src="js/container.js"></script>
<script type="text/javascript" src="js/main.js"></script>
<link rel="stylesheet" type="text/css" href="css/main.css" />
<script type="text/javascript">
var fN = function callBack(o) {
  var resp = eval('(' + o.responseText + ')');  
  var rate = parseInt(resp['rate']/1024);    
  
  if(resp['cancel_upload']) {
    txt="Abgebrochen nach "+resp['current']+" Bytes!"; 
  } else {
    lala=(resp['total']/1024)/1024;
    txt=number_format(lala,2,',')+" Mb hochgeladen!";
  }
  txt += "<br>Uploadgeschwindigkeit "+number_format(rate,2,',')+" kB/ps.";
  document.getElementById('pbar').style.width = '100%';
  document.getElementById('ppct').innerHTML = '100%';
  document.getElementById('ptxt').innerHTML = txt;
  //setTimeout("progress_win.hide(); window.location.reload(true);",2000);
}
var callback = { upload:fN }
//document.getElementById('myinfo').innerHTML = 'Name: '+resp['current']+' Temp: '+resp['temp_filename'];
var fP = function callBack(o) {  
  var resp = eval('(' + o.responseText + ')');
  if(!resp['done']) { 
    if(resp['total']) {      
      var pct = parseInt(100*(resp['current']/resp['total']));
      document.getElementById('pbar').style.width = ''+pct+'%';
      document.getElementById('ppct').innerHTML = " "+pct+"%";
      document.getElementById('ptxt').innerHTML = resp['current']+" of "+resp['total']+" bytes";
    }
    setTimeout("update_progress()",500);
  } else if(resp['cancel_upload']) {
    txt="Abgebrochen nach "+resp['current']+" bytes!"; 
    document.getElementById('ptxt').innerHTML = txt;
    setTimeout("progress_win.hide(); window.location.reload(true);",2000);
  }
}
var progress_callback = { success:fP }

function update_progress() {
  progress_key = document.getElementById('progress_key').value;
  YAHOO.util.Connect.asyncRequest('GET','progress.php?progress_key='+progress_key, progress_callback);
}

var progress_win;

function postForm(target,formName) {
  YAHOO.util.Connect.setForm(formName,true);
  YAHOO.util.Connect.asyncRequest('POST',target,callback);
/* Is there some event that triggers on an aborted file upload? */
  /*YAHOO.util.Event.addListener(window, "abort", function () { alert('abort') } );*/
  progress_win = new YAHOO.widget.Panel("progress_win", { width:"420px", fixedcenter:false, underlay:"shadow", close:false, draggable:true, modal:true, effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.3} } );
  progress_win.setHeader("Lade hoch "+document.getElementById('test_file').value+" ...");
  progress_win.setBody('<div style="height: 1em; width: 400px; border:1px solid #000;"> <div id="pbar" style="background: #99e; height: 98%; width:0%; float:left;">&nbsp;</div> <div id="ppct" style="height: 90%; position: absolute; margin: 1 0 0 185;">0%</div></div><div id="ptxt" style="margin: 3 0 0 5">0 of 0 bytes</div>');
  progress_win.render(document.body);
  update_progress();
}
</script>
</head>
<body>
 <form enctype="multipart/form-data" id="upload_form" action="" onsubmit="postForm('upload.php','upload_form'); return false;" method="POST">
  <input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo uniqid()?>"/>
  <input type="file" id="test_file" name="test_file"/><br/>
  <input type="submit" value="Upload!"/>
 </form>
 <div id="progress_win"> 
    <div class="hd" style="color: #222; background: #bbb"></div> 
    <div class="bd"></div> 
    <div class="ft"></div> 
 </div>
 
 <div id="myinfo"></div>  
</body>
</html>
 

Anhänge

Wie versuchst du denn, die Dateien zu kopieren...ich entdecke da nichts im Code.

Soviel ist jedoch klar, da man per HTTP idR. keinen Zugriff auf das Upload-Verzeichnis hat, und man mit JS auch nichts auf dem Server speichern kann, ist das eher ein Fall fürs PHP-Board(ich schiebe es mal dorthin)
 
Zurück