本文整理汇总了PHP中HTTPRequest::send_file方法的典型用法代码示例。如果您正苦于以下问题:PHP HTTPRequest::send_file方法的具体用法?PHP HTTPRequest::send_file怎么用?PHP HTTPRequest::send_file使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTTPRequest
的用法示例。
在下文中一共展示了HTTPRequest::send_file方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: sendFileToBrowser
/**
* Outputs appropriate header for downloading a file
* exits() after the call, so that no further output is given.
*
* @deprecated 2.3 Return a HTTPRequest::send_file() object instead
*/
static function sendFileToBrowser($fileData, $fileName, $mimeType = false)
{
user_error("HTTP::sendFileToBrowser() deprecated; return a HTTPRequest::send_file() object instead", E_USER_NOTICE);
HTTPRequest::send_file($fileData, $fileName, $mimeType)->output();
exit(0);
}
示例2: export
/**
* Exports a given set of comma-separated IDs (from a previous search-query, stored in a HiddenField).
* Uses {$csv_columns} if present, and falls back to {$result_columns}.
* We move the most filedata generation code to the function {@link generateExportFileData()} so that a child class
* could reuse the filedata generation code while overwrite export function.
*
* @todo Make relation-syntax available (at the moment you'll have to use custom sql)
*/
function export() {
$now = Date("d-m-Y-H-i");
$fileName = "export-$now.csv";
if($fileData = $this->generateExportFileData($numColumns, $numRows)){
return HTTPRequest::send_file($fileData, $fileName);
}else{
user_error("No records found", E_USER_ERROR);
}
}
示例3: export
/**
* Overidden to exclude certain fields (IE Save) from the export. Additionally,
* we need to trim the result set of fields that don't exist in the field anymore, even if there
* are form submissions that have values for those non-existent fields.
*/
public function export($fileName = null)
{
$separator = ",";
// Get the UserDefinedForm to export data from the URL
$SQL_ID = isset($_REQUEST['id']) ? Convert::raw2sql($_REQUEST['id']) : false;
if ($SQL_ID) {
$udf = DataObject::get_by_id("UserDefinedForm", $SQL_ID);
if ($udf) {
$fileName = str_replace(' ', '_', $udf->MenuTitle . '-' . date('Y-m-d_H.i.s') . '.csv');
// we'll limit submissions to only those that are completed.
$submissions = $udf->Submissions();
//'"SubmissionStatus" = \'Complete\'');
if ($submissions && $submissions->Count() > 0) {
// Get all the submission IDs (so we know what names/titles to get - helps for sites with many UDF's)
$inClause = array();
foreach ($submissions as $submission) {
$inClause[] = $submission->ID;
}
// Get the CSV header rows from the database
$tmp = DB::query("SELECT DISTINCT \"SubmittedFormField\".\"ID\", \"Name\", \"Title\"\n\t\t\t\t\t\tFROM \"SubmittedFormField\"\n\t\t\t\t\t\tLEFT JOIN \"SubmittedForm\" ON \"SubmittedForm\".\"ID\" = \"SubmittedFormField\".\"ParentID\"\n\t\t\t\t\t\tWHERE \"SubmittedFormField\".\"ParentID\" IN (" . implode(',', $inClause) . ")\n\t\t\t\t\t\tORDER BY \"SubmittedFormField\".\"ID\"");
// Sort the Names and Titles from the database query into separate keyed arrays
$stored = array();
foreach ($tmp as $array) {
// only store if we haven't got this field already
// TODO Specific hack here to handle save fields in editable user forms
if (!isset($stored[$array['Name']]) && $array['Title'] != 'Save') {
$csvHeaderNames[] = $array['Name'];
$csvHeaderTitle[] = $array['Title'];
$stored[$array['Name']] = true;
}
}
// For every submission...
$i = 0;
foreach ($submissions as $submission) {
// Get the rows for this submission (One row = one form field)
$dataRow = $submission->Values();
$rows[$i] = array();
// For every row/field, get all the columns
foreach ($dataRow as $column) {
// If the Name of this field is in the $csvHeaderNames array, get an array of all the places it exists
if ($index = array_keys($csvHeaderNames, $column->Name)) {
if (is_array($index)) {
// Set the final output array for each index that we want to insert this value into
foreach ($index as $idx) {
$rows[$i][$idx] = $column->Value;
}
$rows[$i]['SubmissionStatus'] = $submission->SubmissionStatus;
$rows[$i]['Submitted'] = $submission->LastEdited;
}
}
}
$i++;
}
$csvHeaderTitle[] = "Status";
$csvHeaderTitle[] = "Submitted";
// CSV header row
$csvData = '"' . implode('","', $csvHeaderTitle) . '"' . "\n";
// For every row of data (one form submission = one row)
foreach ($rows as $row) {
// Loop over all the names we can use
for ($i = 0; $i < count($csvHeaderNames); $i++) {
if (!isset($row[$i]) || !$row[$i]) {
$csvData .= '"",';
} else {
$csvData .= '"' . str_replace('"', '\\"', $row[$i]) . '",';
}
}
// Start a new row for each submission
$csvData .= '"' . $row['SubmissionStatus'] . '",' . '"' . $row['Submitted'] . '"' . "\n";
}
} else {
user_error("No submissions to export.", E_USER_ERROR);
}
if (class_exists('SS_HTTPRequest')) {
SS_HTTPRequest::send_file($csvData, $fileName)->output();
} else {
HTTPRequest::send_file($csvData, $fileName)->output();
}
} else {
user_error("'{$SQL_ID}' is a valid type, but we can't find a UserDefinedForm in the database that matches the ID.", E_USER_ERROR);
}
} else {
user_error("'{$SQL_ID}' is not a valid UserDefinedForm ID.", E_USER_ERROR);
}
}
示例4: export
function export()
{
// specify custom baseurl for publishing to other webroot
if (isset($_REQUEST['baseurl'])) {
$base = $_REQUEST['baseurl'];
if (substr($base, -1) != '/') {
$base .= '/';
}
Director::setBaseURL($base);
}
// setup temporary folders
$tmpBaseFolder = TEMP_FOLDER . '/static-export';
$tmpFolder = project() ? "{$tmpBaseFolder}/" . project() : "{$tmpBaseFolder}/site";
if (!file_exists($tmpFolder)) {
Filesystem::makeFolder($tmpFolder);
}
$baseFolderName = basename($tmpFolder);
// symlink /assets
$f1 = ASSETS_PATH;
$f2 = Director::baseFolder() . '/' . project();
`cd {$tmpFolder}; ln -s {$f1}; ln -s {$f2}`;
// iterate through all instances of SiteTree
$pages = DataObject::get("SiteTree");
foreach ($pages as $page) {
$subfolder = "{$tmpFolder}/{$page->URLSegment}";
$contentfile = "{$tmpFolder}/{$page->URLSegment}/index.html";
// Make the folder
if (!file_exists($subfolder)) {
Filesystem::makeFolder($subfolder);
}
// Run the page
Requirements::clear();
$link = Director::makeRelative($page->Link());
$response = Director::test($link);
// Write to file
if ($fh = fopen($contentfile, 'w')) {
fwrite($fh, $response->getBody());
fclose($fh);
}
}
// copy homepage (URLSegment: "home") to webroot
copy("{$tmpFolder}/home/index.html", "{$tmpFolder}/index.html");
// archive all generated files
`cd {$tmpBaseFolder}; tar -czhf {$baseFolderName}.tar.gz {$baseFolderName}`;
$archiveContent = file_get_contents("{$tmpBaseFolder}/{$baseFolderName}.tar.gz");
// remove temporary files and folder
Filesystem::removeFolder($tmpBaseFolder);
// return as download to the client
$response = HTTPRequest::send_file($archiveContent, "{$baseFolderName}.tar.gz", 'application/x-tar-gz');
echo $response->output();
}
示例5: export
/**
* Export each of the form submissions for this UserDefinedForm
* instance into a CSV file.
*
* In order to run this export function, the user must be
* able to edit the page, so we check canEdit()
*
* @return HTTPResponse / bool
*/
public function export()
{
$now = Date("Y-m-d_h.i.s");
$fileName = "export-{$now}.csv";
$separator = ",";
// Get the UserDefinedForm to export data from the URL
$SQL_ID = isset($_REQUEST['id']) ? Convert::raw2sql($_REQUEST['id']) : false;
if ($SQL_ID) {
$udf = DataObject::get_by_id("UserDefinedForm", $SQL_ID);
if ($udf) {
$submissions = $udf->Submissions();
if ($submissions && $submissions->Count() > 0) {
// Get all the submission IDs (so we know what names/titles to get - helps for sites with many UDF's)
$inClause = array();
foreach ($submissions as $submission) {
$inClause[] = $submission->ID;
}
// Get the CSV header rows from the database
$tmp = DB::query("SELECT DISTINCT \"SubmittedFormField\".\"ID\", \"Name\", \"Title\"\n\t\t\t\t\t\tFROM \"SubmittedFormField\"\n\t\t\t\t\t\tLEFT JOIN \"SubmittedForm\" ON \"SubmittedForm\".\"ID\" = \"SubmittedFormField\".\"ParentID\"\n\t\t\t\t\t\tWHERE \"SubmittedFormField\".\"ParentID\" IN (" . implode(',', $inClause) . ")\n\t\t\t\t\t\tORDER BY \"SubmittedFormField\".\"ID\"");
// Sort the Names and Titles from the database query into separate keyed arrays
foreach ($tmp as $array) {
$csvHeaderNames[] = $array['Name'];
$csvHeaderTitle[] = $array['Title'];
}
// We need Headers to be unique, query is returning headers multiple times (number of submissions).
// TODO: Fix query
$csvHeaderNames = array_unique($csvHeaderNames);
$csvHeaderTitle = array_unique($csvHeaderTitle);
// For every submission...
$i = 0;
foreach ($submissions as $submission) {
// Get the rows for this submission (One row = one form field)
$dataRow = $submission->FieldValues();
$rows[$i] = array();
// For every row/field, get all the columns
foreach ($dataRow as $column) {
// If the Name of this field is in the $csvHeaderNames array, get an array of all the places it exists
if ($index = array_keys($csvHeaderNames, $column->Name)) {
if (is_array($index)) {
// Set the final output array for each index that we want to insert this value into
foreach ($index as $idx) {
$rows[$i][$idx] = $column->Value;
}
$rows[$i]['Submitted'] = $submission->Created;
}
}
}
$i++;
}
// CSV header row
$csvData = '"' . implode('","', $csvHeaderTitle) . '"' . ',"Submitted"' . "\n";
// For every row of data (one form submission = one row)
foreach ($rows as $row) {
// Loop over all the names we can use
for ($i = 0; $i < count($csvHeaderNames); $i++) {
if (!isset($row[$i]) || !$row[$i]) {
$csvData .= '"",';
} else {
$csvData .= '"' . str_replace('"', '\\"', $row[$i]) . '",';
}
}
// Start a new row for each submission
$csvData .= '"' . $row['Submitted'] . '"' . "\n";
}
} else {
user_error("No submissions to export.", E_USER_ERROR);
}
if (class_exists('SS_HTTPRequest')) {
SS_HTTPRequest::send_file($csvData, $fileName)->output();
} else {
HTTPRequest::send_file($csvData, $fileName)->output();
}
} else {
user_error("'{$SQL_ID}' is a valid type, but we can't find a UserDefinedForm in the database that matches the ID.", E_USER_ERROR);
}
} else {
user_error("'{$SQL_ID}' is not a valid UserDefinedForm ID.", E_USER_ERROR);
}
}
示例6: fileFound
/**
* File found response
*
* @param $file File to send
* @param $alternate_path string If supplied, return the file from this path instead, for
* example, resampled images.
*/
function fileFound(File $file, $alternate_path = null)
{
// File properties
$file_name = $file->Name;
$file_path = Director::getAbsFile($alternate_path ? $alternate_path : $file->FullPath);
$file_size = filesize($file_path);
// Testing mode - return an HTTPResponse
if (self::$use_ss_sendfile) {
if (ClassInfo::exists('SS_HTTPRequest')) {
return SS_HTTPRequest::send_file(file_get_contents($file_path), $file_name);
} else {
return HTTPRequest::send_file(file_get_contents($file_path), $file_name);
}
}
// Normal operation:
$mimeType = HTTP::getMimeType($file_name);
header("Content-Type: {$mimeType}; name=\"" . addslashes($file_name) . "\"");
header("Content-Disposition: attachment; filename=" . addslashes($file_name));
header("Cache-Control: max-age=1, private");
header("Content-Length: {$file_size}");
header("Pragma: ");
if (self::$use_x_sendfile) {
session_write_close();
header('X-Sendfile: ' . $file_path);
exit;
} elseif ($filePointer = @fopen($file_path, 'rb')) {
session_write_close();
$this->flush();
// Push the file while not EOF and connection exists
while (!feof($filePointer) && !connection_aborted()) {
print fread($filePointer, 1024 * self::$chunck_size_kb);
$this->flush();
}
fclose($filePointer);
exit;
} else {
// Edge case - either not found anymore or can't read
return $this->fileNotFound();
}
}