首页 > 解决方案 > 如何使用 array_column 创建目录

问题描述

以下代码创建了两个文件夹,一个包含$folderName,一个包含$date上传的文件。如果我将其更改为$folderName诸如“uploadingFolder”之类的静态内容,它会创建包含上传文件的文件夹。

如何获取要上传的文件夹及其内容的命名约定:名字姓氏日期。

$formdata = json_decode(file_get_contents("php://input"),true);    
$fname = array_column($formdata, 'firstname');
$lname = array_column($formdata, 'lastname');
$date = date('d-m-Y'); 
$folderName = $fname[0].$lname[0].$date;   
//$folderName = "uploadingFolder";    

mkdir('uploads/'.$folderName, 0777, true);

$total = count($_FILES['files']['name']);


for( $i=0 ; $i < $total ; $i++ ) {    
    $tmpFilePath = $_FILES['files']['tmp_name'][$i];
    $newFilePath = "uploads/".$folderName."/".$_FILES['files']['name'][$i];    

    if(move_uploaded_file($tmpFilePath, $newFilePath)){
        echo "upload successful ";
        } else {
        echo "error uploading files ";
    }

}

json示例

$sampledata = '{"step":3,"form":{"firstname":"Jackie","lastname":"Hamer","address":"#45 test street","phone":"8681234567","email":"jackie@gmail.com","id":"a0e4c2c2g6c2b1g6","passport":"4545454787T","country":"Grenada","date":"2020-06-13","rdate":"2020-06-11","hotel":"True Blue Bay","package":"10","payment":"10","pfirstname":"Jamie","plastname":"Grant","atravellerfirstname":"Jackie","atravellerlastname":"Browne","refereefname":"Jamie","refereelname":"Lester","refereeaddress":"#45 Test","refereephone":"8684567894","refereefname2":"Jamie","refereelname2":"Louis","refereeaddress2":"#45 Test","refereephone2":"8687878787","formfiles":[]},"countries":[{"Country":"Grenada","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591657087,"_created":1591657074,"_id":"5edec27264396144390000cd"},{"Country":"Barbados","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591657105,"_created":1591657105,"_id":"5edec2913763637d1700010f"},{"Country":"St. Lucia","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591657142,"_created":1591657142,"_id":"5edec2b6303466c0d0000254"},{"Country":"Curacao","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720520,"_created":1591720483,"_id":"5edfba233336352eef0002f9"},{"Country":"Panama","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720527,"_created":1591720527,"_id":"5edfba4f363331fc08000133"},{"Country":"Cancun","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720558,"_created":1591720558,"_id":"5edfba6e38353443d10002c6"}],"hotels":[{"HotelName":"True Blue Bay","URL":"https://www.truebluebay.com/","Country":["Grenada"],"Image":{"path":"storage/uploads\\truebluebay.jpg"},"_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720577,"_created":1589575617,"_id":"5ebeffc134306446460002b9","TestCountry":null}],"selectValue":"Grenada","files":[{},{},{},{},{},{}],"disabled":false,"sumbitted":false,"submitted":true}';

标签: javascriptphparrays

解决方案


像这样;

<?php

$formdata = json_decode(file_get_contents("php://input"), true); 

$fname = $formdata['form']['firstname'];
$lname = $formdata['form']['lastname'];
$date = date('d-m-Y'); 

$folderName = $fname.' '.$lname.' '.$date; 
// Added spaces between for ya. Would recommend to do it like [YYYY-MM-DD Lastname Firstname] though

mkdir('uploads/'.$folderName, 0777, true);

$total = count($_FILES['files']['name']);

for( $i=0 ; $i < $total ; $i++ ) {    
    $tmpFilePath = $_FILES['files']['tmp_name'][$i];
    $newFilePath = "uploads/".$folderName."/".$_FILES['files']['name'][$i];    

    if(move_uploaded_file($tmpFilePath, $newFilePath)){
        echo "upload successful ";
    } else {
        echo "error uploading files ";
    }
}

我对此进行了测试;

<?php

$sampledata = '{"step":3,"form":{"firstname":"Jackie","lastname":"Hamer","address":"#45 test street","phone":"8681234567","email":"jackie@gmail.com","id":"a0e4c2c2g6c2b1g6","passport":"4545454787T","country":"Grenada","date":"2020-06-13","rdate":"2020-06-11","hotel":"True Blue Bay","package":"10","payment":"10","pfirstname":"Jamie","plastname":"Grant","atravellerfirstname":"Jackie","atravellerlastname":"Browne","refereefname":"Jamie","refereelname":"Lester","refereeaddress":"#45 Test","refereephone":"8684567894","refereefname2":"Jamie","refereelname2":"Louis","refereeaddress2":"#45 Test","refereephone2":"8687878787","formfiles":[]},"countries":[{"Country":"Grenada","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591657087,"_created":1591657074,"_id":"5edec27264396144390000cd"},{"Country":"Barbados","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591657105,"_created":1591657105,"_id":"5edec2913763637d1700010f"},{"Country":"St. Lucia","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591657142,"_created":1591657142,"_id":"5edec2b6303466c0d0000254"},{"Country":"Curacao","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720520,"_created":1591720483,"_id":"5edfba233336352eef0002f9"},{"Country":"Panama","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720527,"_created":1591720527,"_id":"5edfba4f363331fc08000133"},{"Country":"Cancun","_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720558,"_created":1591720558,"_id":"5edfba6e38353443d10002c6"}],"hotels":[{"HotelName":"True Blue Bay","URL":"https://www.truebluebay.com/","Country":["Grenada"],"Image":{"path":"storage/uploads\\truebluebay.jpg"},"_mby":"5ebef4733964375a880000ca","_by":"5ebef4733964375a880000ca","_modified":1591720577,"_created":1589575617,"_id":"5ebeffc134306446460002b9","TestCountry":null}],"selectValue":"Grenada","files":[{},{},{},{},{},{}],"disabled":false,"sumbitted":false,"submitted":true}';

$formdata = json_decode($sampledata, true);

$fname = $formdata['form']['firstname'];
$lname = $formdata['form']['lastname'];
$date = date('d-m-Y'); 

$folderName = $fname.' '.$lname.' '.$date; 

var_dump($folderName); // string(23) "Jackie Hamer 16-06-2020"

特别重要的注意事项:确保名字或姓氏中不存在文件夹的非法字符!您应该删除或替换非法的特殊字符!


推荐阅读