javascript - 如何使用 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}';
解决方案
像这样;
<?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"
特别重要的注意事项:确保名字或姓氏中不存在文件夹的非法字符!您应该删除或替换非法的特殊字符!
推荐阅读
- telegram - 将 TelegramDesktop 配置文件转换为 telegram-cli
- javascript - AJAX 不发送数据,我不能使用 POST Result
- javascript - Angular 绑定中的 Unicode 字符
- java - 如何排除 IntelliJ 中的不安全删除?
- java - 为什么我们需要在 PACT 测试中进行单元测试?
- vb.net - 在每个循环中跳过一行,并带有一个排好序的列
- javascript - 测试开关案例 - 单元测试
- c#-4.0 - Sandcastle 帮助文件生成器 (SHFB)。控制在源代码文件的帮助文件中添加/不添加类
- go - 找不到提供包的模块
- spring - Spring Data Rest以毫秒格式返回日期