]> git.mxchange.org Git - friendica.git/blobdiff - addon/js_upload/js_upload.php
suppress some scraping errors when confronted with hybrid/strange
[friendica.git] / addon / js_upload / js_upload.php
index b738ade241d1400628737ea9309c2edd9df1f28a..dc2dc37dcb8c64bf2b8ebb2f4348af6b1870b532 100644 (file)
@@ -105,7 +105,7 @@ function js_upload_post_init(&$a,&$b) {
 
        $uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
 
-       $result = $uploader->handleUpload('uploads/');
+       $result = $uploader->handleUpload();
 
 
        // to pass data through iframe you will need to encode all html tags
@@ -124,11 +124,10 @@ function js_upload_post_file(&$a,&$b) {
 
        $result = $a->data['upload_result'];
 
-       $b['src']               = 'uploads/' . $result['filename'];
+       $b['src']               = $result['path'];
        $b['filename']  = $result['filename'];
        $b['filesize']  = filesize($b['src']);
 
-logger('post_file' . print_r($b, true));
 }
 
 
@@ -147,28 +146,32 @@ logger('upload_post_end');
  * Handle file uploads via XMLHttpRequest
  */
 class qqUploadedFileXhr {
+
+       private $pathnm = '';
+
     /**
-     * Save the file to the specified path
+     * Save the file in the temp dir.
      * @return boolean TRUE on success
      */
-    function save($path) {    
+    function save() {    
         $input = fopen("php://input", "r");
-        $temp = tmpfile();
+        $this->pathnm = tempnam(sys_get_temp_dir(),'frn');
+               $temp = fopen($this->pathnm,"w");
         $realSize = stream_copy_to_stream($input, $temp);
+
         fclose($input);
+               fclose($temp);
         
         if ($realSize != $this->getSize()){            
             return false;
         }
-        
-        $target = fopen($path, "w");        
-        fseek($temp, 0, SEEK_SET);
-        stream_copy_to_stream($temp, $target);
-        fclose($target);
-        
         return true;
     }
 
+       function getPath() {
+               return $this->pathnm;
+       }
+
     function getName() {
         return $_GET['qqfile'];
     }
@@ -187,16 +190,22 @@ class qqUploadedFileXhr {
  */
 
 class qqUploadedFileForm {  
+
+
     /**
      * Save the file to the specified path
      * @return boolean TRUE on success
      */
-    function save($path) {
-        if(!move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)){
-            return false;
-        }
+
+
+    function save() {
         return true;
     }
+
+       function getPath() {
+               return $_FILES['qqfile']['tmp_name'];
+       }
+
     function getName() {
         return $_FILES['qqfile']['name'];
     }
@@ -225,6 +234,7 @@ class qqFileUploader {
         } else {
             $this->file = false; 
         }
+
     }
     
     private function checkServerSettings(){        
@@ -251,10 +261,7 @@ class qqFileUploader {
     /**
      * Returns array('success'=>true) or array('error'=>'error message')
      */
-    function handleUpload($uploadDirectory, $replaceOldFile = FALSE){
-        if (!is_writable($uploadDirectory)){
-            return array('error' => t('Server error. Upload directory isn\'t writable.'));
-        }
+    function handleUpload(){
         
         if (!$this->file){
             return array('error' => t('No files were uploaded.'));
@@ -289,18 +296,18 @@ class qqFileUploader {
             return array('error' => t('File has an invalid extension, it should be one of ') . $these . '.');
         }
         
-        if(!$replaceOldFile){
-            /// don't overwrite previous files that were uploaded
-            while (file_exists($uploadDirectory . $filename . '.' . $ext)) {
-                $filename .= rand(10, 99);
-            }
-        }
-        
-        if ($this->file->save($uploadDirectory . $filename . '.' . $ext)){
-            return array('success'=>true,'filename' => $filename . '.' . $ext);
+        if ($this->file->save()){
+            return array(
+                               'success'=>true,
+                               'path' => $this->file->getPath(), 
+                               'filename' => $filename . '.' . $ext
+                       );
         } else {
-            return array('error'=> t('Could not save uploaded file.') .
-                t('The upload was cancelled, or server error encountered'),'filename' => $filename . '.' . $ext);
+            return array(
+                               'error'=> t('Upload was cancelled, or server error encountered'),
+                               'path' => $this->file->getPath(), 
+                               'filename' => $filename . '.' . $ext
+                       );
         }
         
     }