本文整理汇总了PHP中ZipArchive::getfromName方法的典型用法代码示例。如果您正苦于以下问题:PHP ZipArchive::getfromName方法的具体用法?PHP ZipArchive::getfromName怎么用?PHP ZipArchive::getfromName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZipArchive
的用法示例。
在下文中一共展示了ZipArchive::getfromName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: handleupload
function handleupload(&$errors, &$warnings, &$messages)
{
if (empty($_FILES) || empty($_FILES["file"])) {
$errors[] = "No file was uploaded";
return false;
}
if ($_FILES["file"]["error"]) {
$errors[] = "There was a problem uploading the file — try again in a short while";
return false;
}
switch ($_FILES["file"]["type"]) {
case "application/xml":
case "text/xml":
case "application/qti+xml":
$metadata = array();
$filename = $_FILES["file"]["name"];
$xml = file_get_contents($_FILES["file"]["tmp_name"]);
break;
case "application/zip":
case "application/x-zip-compressed":
case "application/x-zip":
// open zip file
$zip = new ZipArchive();
if ($zip->open($_FILES["file"]["tmp_name"]) !== true) {
$errors[] = "Failed to open the zip file. Ensure it is not corrupt and try again.";
return false;
}
// get manifest, make sure it's valid XML
$mxml = $zip->getfromName("imsmanifest.xml");
if ($mxml === false) {
$errors[] = "Error getting manifest file -- are you sure this is a content package?";
return false;
}
$mxml = simplexml_load_string($mxml);
if ($mxml === false) {
$errors[] = "The manifest file in the uploaded content package is not valid XML";
return false;
}
$metadata = array();
// get manifest identifier
$metadata["midentifier"] = (string) $mxml["identifier"];
// ensure there's only one resource
$resource = $mxml->resources->resource;
if (count($resource) > 1) {
$errors[] = "More than one resource element found in the manifest -- this is not a single-item content package";
return false;
}
if (count($resource) == 0) {
$errors[] = "No resource elements found in the manifest -- this is not a single-item content package";
return false;
}
// ensure it's an item rather than an assessment
if (!preg_match('%^imsqti_item_%', (string) $resource["type"])) {
$errors[] = "This content package contains an assessment test rather than an assessment item";
return false;
}
// get the metadata
$imsmd = $resource->metadata->children(NS_IMSMD);
if (isset($imsmd->lom->general->description->langstring[0])) {
$metadata["description"] = (string) $imsmd->lom->general->description->langstring[0];
}
$metadata["keywords"] = array();
foreach ($imsmd->lom->general->keyword as $keyword) {
$metadata["keywords"][] = (string) $keyword->langstring[0];
}
// get the file pointed to
$filename = (string) $resource["href"];
$xml = $zip->getfromName($filename);
if ($xml === false) {
$errors[] = "Error getting item file \"{$filename}\" from archive";
return false;
}
break;
default:
$errors[] = "The uploaded file (of type " . $_FILES["file"]["type"] . ") was not recognized as a content package (zip) or QTI XML file.";
return false;
}
return array($xml, $metadata);
}