2016-03-26 17 views
1

Şu anda PHP komut dosyanızın neden çalışmıyor olduğunu debug etmeye çalışıyorum. Esasen, kullanıcının yeni grup adı oluşturduğu, ardından 2 farklı dosyadan birini yükleme seçeneğine sahip bir web formum var.html + php yükleme formu, dosyayı yükleyemiyor

html:

<form method="post" action="/php/create.php" enctype="multipart/form-data"> 
<div class="form-group"> 
<label for="customerName">Customer Name:</label> 
<input type="text" class="form-control" id="foldername" name="foldername" placeholder="Customer Name"> 
</div> 
<div class="form-group"> 
<label for="healthCheckOutput">HealthCheck Results</label> 
<input type="file" id="healthCheckFile"> 
</div> 
<div class="form-group"> 
<label for="SANUpload">Appliance Data</label> 
<input type="file" id="SANUpload" name="SANUpload"> 
</div> 
<button type="submit" class="btn btn-default">Submit</button> 
</form> 

php: PHP

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL|E_STRICT); 
//Create Customer Folder 
$folder = $_POST['foldername']; 

$dirPath = '../customers/'.$folder; 
if (!mkdir($dirPath, 0750, true)) { 
    die('Failed to create customer folders...current customer name already exists'); 
} 

//Upload the file and move it to the correct folders for processing 
//$target_dir = "/uploads/"; 
//$target_file = $target_dir . basename($_FILES["SANUpload"]["name"]) 

$uploaddir = "uploads/"; 
$uploadfile = $uploaddir . basename($_FILES['SANUpload']['name']); 

echo '<pre>'; 
if (move_uploaded_file($_FILES['SANUpload']['tmp_name'], $uploadfile)){ 
echo "Success.\n"; 
} else { 
echo "Failure.\n"; 
} 

echo 'Here is some more debugging info:'; 
print_r($_FILES); 
print "</pre>"; 
?> 

ayıklama:

Warning: move_uploaded_file(uploads/test2.csv): failed to open stream: No such file or directory in /var/www/html/php/create.php on line 26 

Warning: move_uploaded_file(): Unable to move '/tmp/php8E2y8j' to 'uploads/test2.csv' in /var/www/html/php/create.php on line 26 

Failure. 
Here is some more debugging info:Array 
(
[SANUpload] => Array 
    (
     [name] => test2.csv 
     [type] => text/csv 
     [tmp_name] => /tmp/php8E2y8j 
     [error] => 0 
     [size] => 58242 
    ) 

) 

ben yapmıyorum yönündeki şey basit eminim. Bu, kamuya açık bir uygulama değil, küçük bir yerel ana sanal cihaz olduğunu unutmayın.

+0

zaten O 'uploads' dizin var olmadığını şikayetçi –

+0

oluşturulan bazı klasöre dosya yükleyin deneyin. 'Uploads' dizini, betiği içeren klasörün bir alt dizini midir, yoksa başka bir yerde mi? Tam yolu kullanmayı deneyin. – Barmar

+0

onun kök altındaki bir klasör. Ben tam yolunu koysa bile hala bu hatayı alırım. Onu deneyebilirim. ama @Barmar'a göre dosya var ve orada ve yazılabilir - betik bunu algılamıyor. Neyi kaçırdığımı anlayamadım. – Jared

cevap

0

İnternette, PHP için yükleme işleminin daha ayrıntılı bir örneğini daha buldum. Bu da sorunu çözmeye yardımcı oldu.

Şu an kullandığım şey - mükemmel çalışıyor.

PHP:

define("UPLOAD_DIR", "/var/www/html/uploads/"); 

if (!empty($_FILES["SANUpload"])) { 
$myFile = $_FILES["SANUpload"]; 

if ($myFile["error"] !== UPLOAD_ERR_OK) { 
    echo "<p>An error occurred.</p>"; 
    exit; 
} 

// ensure a safe filename 
$name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]); 

// don't overwrite an existing file 
$i = 0; 
$parts = pathinfo($name); 
while (file_exists(UPLOAD_DIR . $name)) { 
    $i++; 
    $name = $parts["filename"] . "-" . $i . "." . $parts["extension"]; 
} 

// preserve file from temporary directory 
$success = move_uploaded_file($myFile["tmp_name"], 
    UPLOAD_DIR . $name); 
if (!$success) { 
    echo "<p>Unable to save file.</p>"; 
    exit; 
} 
// set proper permissions on the new file 
chmod(UPLOAD_DIR . $name, 0644); 
} 

Bu şimdiye HTML ile zaten kurulum ne ile birliktedir.
Bunu ayrıntılı olarak inceledik ve belgelenmiş çok fazla çalışma kopyası vardı.

http://www.sitepoint.com/file-uploads-with-php/