我没有看到wat出错,但我做的是尝试创建一个新的xml文件。这是我的测试代码:
$filename = "my_xml_file_".date("Y_m_d_His").".xml";
$path = $this->get('kernel')->getRootDir().'/../mydirectory/'. $filename;
$fd = fopen ($path, "w");
fputs($fd, '<xml><test></test></xml>');
fclose($fd);
我的文件应仅包含:
<xml><test></test></xml>
但它包含在我文件的最后,charachters的长度,如:
<xml><test></test></xml>24
当我这样做时:
$filename = "my_xml_file_".date("Y_m_d_His").".xml";
$path = $this->get('kernel')->getRootDir().'/../mydirectory/'. $filename;
$fd = fopen ($path, "w");
fputs($fd, '');
fclose($fd);
该文件仅包含以下内容: 0
由于没有在我的xml文件中获取字符长度,我忽略了什么?感谢。
文件已正确保存,但在使用ajax调用进行下载时更改:
$filePath = $this->get('kernel')->getRootDir().'/../mydirectory/'.$filename;
$extension = explode('.', $filename);
$extension = end($extension);
if (!is_file($filePath)) {
// file does not exist
echo "file does not exist: " . $filePath;
exit();
}
$response = new Response();
// Set headers
$response->setStatusCode(200);
$response->headers->set('Cache-Control', 'private');
if($extension == 'csv'):
$response->headers->set('Content-Type', 'text/csv');
elseif($extension == 'xml'):
$response->headers->set('Content-Type', 'text/xml');
else:
header('Content-type: application/json');
endif;
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filePath) . '";');
$response->headers->set('Content-length', filesize($filePath));
$response->sendHeaders();
$response->setContent(readfile($filePath));
return $response;
答案 0 :(得分:0)
我认为对这个kernel
人的调用会在文件写入缓冲区中产生一些值。请在写入文件之前执行以下操作:
fflush($file);
示例:
$filename = "my_xml_file_".date("Y_m_d_His").".xml";
$path = $this->get('kernel')->getRootDir().'/../mydirectory/'. $filename;
$fd = fopen ($path, "w");
fflush($fd);
fputs($fd, '<xml><test></test></xml>');
fclose($fd);
答案 1 :(得分:0)
如何在根目录上创建文件并使用php rename函数将其移动到目录中。
确保$path
正确无误。
$filename = "my_xml_file_" . date("Y_m_d_His") . ".xml";
$fd = fopen($filename, "w");
fputs($fd, '<xml><test></test></xml>');
if(fclose($fd)) {
$path = $_SERVER["DOCUMENT_ROOT"].'/mydirectory/';
if(rename($filename,$path.$filename)) {
echo "move";
} else {
echo "not move";
}
}
答案 2 :(得分:0)
我发现了问题,当我从服务器下载文件时,它必须这样做。 在服务器上,文件已正确保存,但在我下载时则没有。
这是因为我做了: $响应 - &GT; setContent(ReadFile的($文件路径));
这不适用于xml,我将其更改为:
componentDidMount: function(){
var geo = navigator.geolocation;
var positionOptions = {
enableHighAccuracy: true,
timeout: 3000,
maximumAge: 0,
};
var success = function(position){
this.setState({
region: {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
},
});
};
var error = function(error){
alert('error watchposition:', error.code);
};
var watchID = geo.watchPosition(success, error, positionOptions);
// geo.getCurrentPosition(success, error, positionOptions);
},