HY,我需要一点点帮助在这里:

我使用的SWFUpload上传图片! 在上传功能我打个电话的文件夹和$_SESSION['folder']所有的文件我上传的都是1个阵列通话$_SESSION['files']后上传完成我print_r($_SESSION)但数组是空的?为什么呢?

这是我的upload.php的:

if($_FILES['image']['name']) {
    list($name,$error) = upload('image','jpeg,jpg,png');
    if($error) {$result = $error;}
    if($name) { // Upload Successful
        $result = watermark($name);
        print '<img src="uploads/'.$_SESSION['dir'].'/'.$result.'" />';

    } else { // Upload failed for some reason.
        print 'noname'.$result;
    }
}

function upload($file_id, $types="") {
    if(!$_FILES[$file_id]['name']) return array('','No file specified');
    $isimage = @getimagesize($_FILES[$file_id]['tmp_name']);
    if (!$isimage)return array('','Not jpg');

    $file_title = $_FILES[$file_id]['name'];
    //Get file extension
    $ext_arr = split("\.",basename($file_title));
    $ext = strtolower($ext_arr[count($ext_arr)-1]); //Get the last extension

    //Not really uniqe - but for all practical reasons, it is
    $uniqer = substr(md5(uniqid(rand(),1)),0,10);
    //$file_name = $uniqer . '_' . $file_title;//Get Unique Name
    //$file_name = $file_title;
    $file_name = $uniqer.".".$ext;

    $all_types = explode(",",strtolower($types));
    if($types) {
        if(in_array($ext,$all_types));
        else {
            $result = "'".$_FILES[$file_id]['name']."' is not a valid file."; //Show error if any.
            return array('',$result);
        }
    }

    if((!isset($_SESSION['dir'])) || (!file_exists('uploads/'.$_SESSION['dir']))){
        $dirname = date("YmdHis");  // 20010310143223
        $pathtodir = $_SERVER['DOCUMENT_ROOT']."/ifunk/uploads/";
        $newdir = $pathtodir.$dirname;
        if(!mkdir($newdir, 0777)){return array('','cannot create directory');}
        $_SESSION['dir'] = $dirname;
    }

    if(!isset($_SESSION['files'])){$_SESSION['files'] = array();}
    //Where the file must be uploaded to
    $folder = 'uploads/'.$_SESSION['dir'].'/';
    //if($folder) $folder .= '/';   //Add a '/' at the end of the folder
    $uploadfile = $folder.$file_name;

    $result = '';
    //Move the file from the stored location to the new location
    if (!move_uploaded_file($_FILES[$file_id]['tmp_name'], $uploadfile)) {
        $result = "Cannot upload the file '".$_FILES[$file_id]['name']."'"; //Show error if any.
        if(!file_exists($folder)) {
            $result .= " : Folder don't exist.";
        } elseif(!is_writable($folder)) {
            $result .= " : Folder not writable.";
        } elseif(!is_writable($uploadfile)) {
            $result .= " : File not writable.";
        }
        $file_name = '';

    } else {
        if(!$_FILES[$file_id]['size']) { //Check if the file is made
            @unlink($uploadfile);//Delete the Empty file
            $file_name = '';
            $result = "Empty file found - please use a valid file."; //Show the error message
        } else {
            //$_SESSION['files'] = array();
            $_SESSION['files'][] .= $file_name;
            chmod($uploadfile,0777);//Make it universally writable.
        }
    }

    return array($file_name,$result);
}
有帮助吗?

解决方案

SWFUpload的不会话ID传递给脚本,当你上传,所以你必须这样做你自己。简单地传递会话ID的GET或POST参数去上传脚本,然后在您的应用程序做到这一点的session_start前:

if(isset($_REQUEST['PHPSESSID'])) {
    session_id($_REQUEST['PHPSESSID']);
}

其他提示

必须传递会话ID SWFUpload实例所使用的上传文件。 详情这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top