我正在尝试创建一个简短的PHP脚本,它接受一个JSON字符串,将其转换为CSV格式(使用fputcsv),并使该CSV可用作下载的.csv文件.我的想法是tmpfile()不用担心cronjobs或磁盘空间不足,但我似乎无法让魔术发生.
这是我的尝试,这是PHP文档的readfile转换示例:
$tmp = tmpfile();
$jsonArray = json_decode( $_POST['json'] );
fputcsv($tmp, $jsonArray);
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.basename($tmp));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($tmp));
ob_clean();
flush();
readfile($tmp);
Run Code Online (Sandbox Code Playgroud)
我觉得Content-Disposition和Content-Transfer-Encoding标题是错的,但我不知道如何修复它们.例如,basename($tmp)似乎没有返回任何东西,我不确定text/csv转移为二进制编码.同样,echo filesize($tmp)也是空白.有没有办法做我在这里尝试的事情?
[编辑]
**以下是我接受的答案后写的工作代码:*
$jsonArray = json_decode( $_POST['json'], true );
$tmpName = tempnam(sys_get_temp_dir(), 'data');
$file = fopen($tmpName, 'w');
fputcsv($file, $jsonArray);
fclose($file);
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; …Run Code Online (Sandbox Code Playgroud) 查看Bootstrap的缩小和未缩小的JS文件中的第一行代码,存在直接的差异:
// bootstrap.js
if (typeof jQuery === 'undefined') { ... }
Run Code Online (Sandbox Code Playgroud)
与
// bootstrap.min.js
if("undefined"==typeof jQuery)...
Run Code Online (Sandbox Code Playgroud)
(亲自看看:bootstrap.js和bootstrap.min.js)
我很困惑为什么这是允许的.我的(可能是天真的)理解是,===它始终是一种性能提升,并且通常可以防止出现意外结果(""例如,与0比较的虚假比较).似乎文件大小的收益在性能上丢失,并且可能导致错误的结果.有人能在这里光明吗?
我在工作中遇到了一些代码,如下所示:
var $divs = $('div');
var $jq = $([1]);
$divs.each(function () {
$jq.context = $jq[0] = this;
// ... do stuff ...
});
Run Code Online (Sandbox Code Playgroud)
我perf'd以上,而且似乎比拥有更快$this = $(this);的函数的顶部.在函数内部,$jq变量具有标准的各种典型的jQuery方法,称为off(.hasClass(), .data(), .find(), ...),代码按预期工作.
我想知道这里的权衡是什么; 也就是你每次不构建一个新对象会失去什么?我只是失去了"历史"(即.pushStack(), .end(), .andSelf(), ...)?我应该一直这样做吗?
另外,这是一个命名模式吗?我不能为我的生活弄清楚如何在谷歌上研究这个.
假设我正在从API获取一些图像。我不知道该图像的尺寸将是未来的时间,但我知道我要的是形象,成为src一个ImageView我已经设置为某个特定的大小。我希望从API获得的任何图像都可以填满整个图像ImageView,我想保留宽高比,并且不在乎某个尺寸(宽度或高度)对于视图的设置大小是否太大,因此我使用centerCrop。
<ImageView
android:layout_width="400px"
android:layout_height="300px"
android:scaleType="centerCrop" />
Run Code Online (Sandbox Code Playgroud)
如果从API返回的图像是这样的:
当将其设置为ImageView的src时,结果将类似于此(阴影部分被裁剪掉):
但是,我收到一个要求,我们应该始终显示图像的顶部并从下至上进行裁剪。因此,所需的结果是这样的:
我敢肯定这是可能的,但是我是一个网络人,不在这里工作。以ImageView某种方式扩展,还是尝试使用scaleType="matrix"and setImageMatrix(),或者是第三种未提及的选项会更好吗?
这感觉就像一个新手问题,所以支撑自己.
我很难在编译时使用'id'属性获取对添加的元素的引用.我已经看到一些论坛主题暗示这是不可能的,并且获得对这种方式添加的元素的引用是棘手的,但从来不仅仅是那个技巧.这段代码引发了一个有趣的小事:Error: uncaught exception: Error calling method on NPObject! [plugin exception: "ReferenceError: Error #1069: Property canvas_tentpoles_0 not found on SGraph and there is no default value."].
public function calledAfterInit(graph_values:Array):void
{
for(var i:int=0; i<graph_values.length; i++) {
var cdc:CartesianDataCanvas = new CartesianDataCanvas();
cdc.id = "canvas_tentpoles_"+i;
cdc.includeInRanges = false;
cdc.visible = false;
Areachart.annotationElements = Areachart.annotationElements.concat(cdc);
// [...do stuff...]
}
// [...later...]
for(var j:int=0; j<graph_values.length; j++) {
drawOnCanvas(j);
}
}
private function drawOnCanvas(index:int):void {
var canvas:CartesianDataCanvas = this["canvas_tentpoles_"+index]; // ? Error likely …Run Code Online (Sandbox Code Playgroud) android ×1
apache-flex ×1
imageview ×1
javascript ×1
jquery ×1
minify ×1
performance ×1
php ×1
scaletype ×1