2017-04-04 108 views
0

我的目的是上传一个远程文件从我的电脑创建到特定的文件夹,但我不知道我的代码下面有什么问题。它会上传带有名称和.jpg扩展名的文件,但不会将文件移动到指定的文件夹。上传文件到一个特定的文件夹php

if(isset($_POST["image"])){ 

    define("SITE_NAME","project_name/"); //constant for project name 
    define("SITE_PATH",$_SERVER['DOCUMENT_ROOT']."/".SITE_NAME); //constant for project base directory 
    define("IMAGES_URL",SITE_URL."images/"); //constant for image directory 

    $upload_base_dir=IMAGES_URL; 
    $upload_time_dir=date('Y')."/".date('m')."/".date('d')."/"; // setup directory name 
    $upload_dir = $upload_base_dir.$upload_time_dir; 

    if (!file_exists($upload_dir)) { 
     mkdir($upload_dir, 0777, true); //create directory if not exist 
    } 

    $input = $_POST["image"]; 
    $file = fopen(time()."image.jpg", 'wb'); 
    fwrite($file, $input); 

    //$image_name=basename($_FILES['image']['name']); 
    $image=time().'_'.$image_name; 
    move_uploaded_file($file,$upload_dir.$image); 

    fclose($file); 

} 

有什么建议吗?先谢谢你。

+0

问题是你没有上传图片,你需要'move_uploaded_file()'函数。这里是基本的例子http://php.net/manual/en/features.file-upload.post-method.php – Mario

+0

正确的拼写,格式,语法和清晰度 – mayersdesign

回答

0

move_uploaded_file($ file,$ upload_dir。$ image)仅适用于temp内的项目,可通过$ _FILES superglobal访问。如果你在文章中发送你的文件作为strieam,那不会工作。

1)如果文件是一种形式上传确认形式为多,并通过$ _FILES超全局

move_uploaded_file($_FILES['userfile']['tmp_name'], $yourDirectory.$yourFilename); 

2)访问您的文件,如果您发布的文件通过后流(记住这个将只适用于小文件,因为大文件将超出请求限制)。 http://php.net/manual/en/function.rename.php

rename($currentFilePath, $newFilePath) 

附注: - 使用的fopen或将它移到您创建它用重命名()后的文件直接保存到它的destiantion发送文件作为后期流是一个非常糟糕的主意。

+0

我看,这就是为什么它不工作...所以我无法制作dir wheil我正在上传文件并在那里放置文件?无论如何,我的文件最多为300kb – aitsu

+0

您是否通过常规格式上传? – Auris

+0

不,我没有通过窗体上传它,这就是为什么我被困在这里。 – aitsu

相关问题