小编Imp*_*tor的帖子

如何下载临时文件

我正在尝试创建一个简短的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-DispositionContent-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)

php

22
推荐指数
1
解决办法
1万
查看次数

为什么Javascript minifiers将===转换为==?

查看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.jsbootstrap.min.js)

我很困惑为什么这是允许的.我的(可能是天真的)理解是,===它始终是一种性能提升,并且通常可以防止出现意外结果(""例如,与0比较的虚假比较).似乎文件大小的收益在性能上丢失,并且可能导致错误的结果.有人能在这里光明吗?

javascript minify

6
推荐指数
1
解决办法
126
查看次数

重用jQuery对象更快,但它总是更好吗?

我在工作中遇到了一些代码,如下所示:

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(), ...)?我应该一直这样做吗?

另外,这是一个命名模式吗?我不能为我的生活弄清楚如何在谷歌上研究这个.

performance jquery object-lifetime

5
推荐指数
1
解决办法
81
查看次数

您如何从顶部缩放像viewCrop这样的ImageView?

假设我正在从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时,结果将类似于此(阴影部分被裁剪掉):

使用centerCrop缩放并裁剪的样本图像

但是,我收到一个要求,我们应该始终显示图像的顶部并从下至上进行裁剪。因此,所需的结果是这样的:

从顶部缩放并裁剪示例图像

我敢肯定这是可能的,但是我是一个网络人,不在这里工作。以ImageView某种方式扩展,还是尝试使用scaleType="matrix"and setImageMatrix(),或者是第三种未提及的选项会更好吗?

android imageview android-layout scaletype

4
推荐指数
2
解决办法
4259
查看次数

如何引用运行时添加的Flex元素?

这感觉就像一个新手问题,所以支撑自己.

我很难在编译时使用'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)

apache-flex actionscript-3

1
推荐指数
1
解决办法
1042
查看次数