我正在尝试从input file
标记中实现两个操作。我有以下输入:
<input id='file-input' name='attach' type='file' style='margin-left:15px;'/>
这可以在messages.php
中找到。我想要实现的是两件事:
save as
菜单,用户可从中选择他们希望的位置下载数据。我还有其他页面,我使用input type="file"
上传个人资料图片,并在页面上显示了图像。但我不确定如何执行(1) - 如何打开用户可以保存数据的菜单?
答案 0 :(得分:2)
只需使用Content-Disposition: attachment
标头投放该文件,请参阅PHP Outputting File Attachments with Headers
答案 1 :(得分:1)
您无需伪造点击或其他内容。你可能需要这样的东西。
Italic 是用户操作,粗体是服务器操作。
答案 2 :(得分:1)
在其他不错的答案中,我会这样做。
我已经通过点击你建议的下载按钮来实现,如果文件大于1Mb,你会得到这样的下载
顺便说一下,代码是自我解释的。
PHP部分名为index.php
<?php
$filename = "test3.jpg";
$maxSize = 1000000; // 1Mb
if (isset($_POST['save']))
fileHandler($filename, $maxSize);
function fileHandler($filename, $maxSize)
{
$fileinfo = getimagesize($filename);
$filesize = filesize($filename);
$fp = fopen($filename, "rb");
if ($fileinfo && $fp)
{
header("Content-Type: {$fileinfo['mime']}");
if ($filesize > $maxSize)
{
header('Content-Disposition: attachment; filename="NewName.jpg"');
}
fpassthru($fp);
exit;
} else
{
echo "Error! please contact administrator";
}
}
?>
index.php
内的HTML部分,但重要的是此代码应该在php标记之后,而不是之前。
<form action="index.php" method="post">
<button type="submit" style="border: 0; background: transparent" name="save">
<img src="download.jpg" alt="submit" />
</button>
</form>
注意:您的php文档直接使用
<?php ...
启动很重要,请read
答案 3 :(得分:0)
您可以通过获取图像mime类型并设置内容处置和内容类型标题来执行此操作:
$file = 'path/to/file';
if (file_exists($file)) {
$contents = file_get_contents($file);
$fileSize = filesize($file);
$image_info = getImageSize($file);
$mimeType = $image_info['mime'];
header("content-disposition: attachment; filename=" . basename($file));
header("content-type:$mimeType");
header("Content-length: $fileSize");
echo $contents;
exit;
}