php下载文件并保存到指定文件夹

php下载图片并保存到指定文件夹

function GrabImage($url, $dir, $filename=''){
	if(empty($url)){
		return false;
	}
	$ext = strrchr($url, '.');
	if($ext != '.gif' && $ext != ".jpg" && $ext != ".bmp"){
		echo "格式不支持!";
		return false;
	}
	
	$dir = realpath($dir);
	//目录+文件
	$filename = (empty($filename) ? '/'.time().''.$ext : '/'.$filename);
	$filename = $dir . $filename;
	//开始捕捉 
	ob_start(); 
	readfile($url); 
	$img = ob_get_contents(); 
	ob_end_clean(); 
	$size = strlen($img); 
	$fp2 = fopen($filename , "a"); 
	fwrite($fp2, $img); 
	fclose($fp2); 
	return $filename; 
}

//测试 
$imgpath="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1483602960&di=f93d78756010023602ecb700b802658f&src=http://pic.90sjimg.com/back_pic/u/00/38/54/05/560412efec2d6.jpg";
GrabImage($imgpath,"D://img");//(图片地址,存放目录,存放显示文件名称);




JavaScript 本身是不能将文件保存指定文件夹中的,这是由于浏览器的安全机制所限制的。如果 JavaScript 能够随意地在用户的计算机上创建和操作文件,那么就会带来很大的安全风险。 不过,你可以使用一些技术来实现类似的功能。例如,可以使用服务器端的脚本语言(如 PHP、Node.js 等)来接收前端上传的文件,并将其保存指定文件夹中。具体的实现方式,可以参考以下步骤: 1. 在前端页面中,使用 `input` 元素的 `type="file"` 属性创建一个文件上传框,让用户选择要上传的文件。 ```html <input type="file" id="fileInput"> ``` 2. 使用 JavaScript 获取上传框中选择的文件,并将其发送到服务器端。 ```javascript var fileInput = document.getElementById('fileInput'); var file = fileInput.files[0]; var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); var formData = new FormData(); formData.append('file', file); xhr.send(formData); ``` 3. 在服务器端接收上传的文件,并将其保存指定文件夹中。 以 Node.js 为例,可以使用 `fs` 模块中的 `createWriteStream` 方法来创建一个可写流,将上传的文件写入到指定文件夹中。 ```javascript const fs = require('fs'); const path = require('path'); const express = require('express'); const app = express(); app.post('/upload', (req, res) => { const file = req.files.file; const filePath = path.join(__dirname, 'uploads', file.name); const writeStream = fs.createWriteStream(filePath); file.pipe(writeStream); writeStream.on('finish', () => { res.send('上传成功!'); }); }); app.listen(3000, () => { console.log('服务器启动成功!'); }); ``` 在这个例子中,我们将上传的文件保存到了 `uploads` 文件夹中。当文件上传完成后,服务器会返回一个成功的响应。需要注意的是,这里使用了 `pipe` 方法将文件的可读流和可写流连接起来,实现了文件的写入操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值