像discuz发帖那样,一次上传多个图片,然后将所有上传的图片路径插入到编辑器中。
有没有?
回复讨论(解决方案) 找个js批量上传插件,主要是美观而已,技术角度还是个表单。
从http协议实现角度,下面的php代码是一个活生生的协议细节:
$val) { $data .= --$boundary\n; $data .= content-disposition: form-data; name=\.$key.\\n\n.$val.\n; } $data .= --$boundary\n; //collect filedata foreach($files as $key => $file) { $filecontents = file_get_contents($file['tmp_name']); $data .= content-disposition: form-data; name=\{$key}\; filename=\{$file['name']}\\n; $data .= content-type: image/jpeg\n; $data .= content-transfer-encoding: binary\n\n; $data .= $filecontents.\n; $data .= --$boundary--\n; } $params = array('http' => array( 'method' => 'post', 'header' => 'content-type: multipart/form-data; boundary='.$boundary, 'content' => $data )); $ctx = stream_context_create($params); $fp = fopen($url, 'rb', false, $ctx); if (!$fp) { throw new exception(problem with $url, $php_errormsg); } $response = @stream_get_contents($fp); if ($response === false) { throw new exception(problem reading data from $url, $php_errormsg); } return $response; } //set data (in this example from post) //sample data $postdata = array( 'name' => $_post['name'], 'age' => $_post['age'], 'sex' => $_post['sex'] ); //sample image $files['image'] = $_files['image']; do_post_request(http://example.com, $postdata, $files); ?>
swfopload
本帖最后由 phpnewnew 于 2012-05-26 10:56:05 编辑
在学习php中可能会遇到php上传多张图片问题,上传图片需要对图片格式的校验,保证上传的一定是图片,防止上传其他文件到服务器。多图片上传基本实现方法是使用数组的形式,把所有的图片提交个一个数组,对数组的元素进行一个个循环的处理。下面是php多图片上传的代码示例:
1.
2.//图片目录
3.$img_dir=../upload/;
4.//……html显示上传界面
5./*图片上传处理*/
6.//把图片传到服务器
7.//初始化变量
8.$uploaded=0;
9.$unuploaded=0;
10.//只允许五张图片上传
11.for($i=0;$i<=5;$i++)
12.{
13.//获取当前图片的信息
14.$is_file=$_files['imgfile']['name'][$i];
15.//如果当前图片不为空
16.if(!empty($is_file))
17.{
18.//把当前图片的信息存储到变量里
19.$result[$i]=
20.
21..$_files['imgfile']['name'][$i].
22..round($_files['imgfile']['size'][$i]/1024,2).k
23..$_files['imgfile']['type'][$i].
24.;
25.//判断上传的图片的类型是不是jpg,gif,png,bmp中的一种,同时判断是否上传成功
26.if(
27.$_files['imgfile']['type'][$i]==image/pjpeg||
28.$_files['imgfile']['type'][$i]==image/gif||
29.$_files['imgfile']['type'][$i]==image/x-png||
30.$_files['imgfile']['type'][$i]==image/bmp
31.)
32.{
33.//如果上传的文件没有在服务器上存在
34.if(!file_exists($img_dir.$_files['imgfile']['name'][$i]))
35.{
36.//把图片文件从临时文件夹中转移到我们指定上传的目录中
37.move_uploaded_file($_files['imgfile']['tmp_name'][$i],
38.$img_dir.$_files['imgfile']['name'][$i]);
39.$result[$i].=成功;
40.$uploaded++;
41.}
42.else//如果文件已经在服务器上存在
43.{
44.$result[$i].=文件已存在;
45.$unuploaded++;
46.continue;
47.}
48.}
49.else
50.{
51.$result[$i].=失败;
52.$unuploaded++;
53.}
54.$result[$i].=
;
55.}//endif
56.}//endfor
57.//如果没有选择任何图片
58.if(empty($result))
59.{
60.prompt_msg(错误信息,没有选择任何图片。,返回上一步,uploadimg.php?action=upload);
61.exit();
62.}
63.//显示所有上传后的结果
引用楼主 的回复:
像discuz发帖那样,一次上传多个图片,然后将所有上传的图片路径插入到编辑器中。
有没有?
网上有一个仿qq相册上传插件的程序。
xproer.imageuploader: http://www.cnblogs.com/xproer/archive/2010/08/09/1796077.html
主界面
图片列表
添加图片
编辑图片:
提示信息:
这个强,我们公司上次给客户做的一个网站也是用的这个web图片上传控件。
引用楼主 的回复:
像discuz发帖那样,一次上传多个图片,然后将所有上传的图片路径插入到编辑器中。
有没有?
网上有一个仿qq相册上传插件的程序。
xproer.imageuploader: http://www.cnblogs.com/xproer/archive/2010/08/09/1796077.html
主界面
图片列表
添加图片
编辑图片:
提示信息:
这个用户体验不错。现在的互联网产品做的也越来越好了,用户使用起来也越来越方便了。
引用楼主 的回复:
像discuz发帖那样,一次上传多个图片,然后将所有上传的图片路径插入到编辑器中。
有没有?
网上有一个仿qq相册上传插件的程序。
web图片批量上传控件(xproer.imageuploader): http://www.cnblogs.com/xproer/archive/2010/08/09/1796077.html
主界面
图片列表
添加图片
编辑图片:
提示信息:
整合代码
web图片批量上传控件演示页面 查看上传的图片
这个真心牛x~!!~收下鸟。刚接了一个做网站的单子,正好用上。~!
我去,4楼的那个插件大家别用!!!!!!!!!!!!!!!
本地可以使用,但是项目放到互联网使用时,就会提示你ip未授权,不让你继续使用,原来这插件是个收费版的!!!而且价钱还不是一般的贵!!!我瞎了眼了,下下来之后自己改了好多代码才弄好的图片上传,放到网上去之后就用不起来了!!!为什么用的时候不告诉我是收费的!!!这个公司就是贱!!!不让用拉倒,去别别的插件用!!!
我去,4楼的那个插件大家别用!!!!!!!!!!!!!!!
本地可以使用,但是项目放到互联网使用时,就会提示你ip未授权,不让你继续使用,原来这插件是个收费版的!!!而且价钱还不是一般的贵!!!我瞎了眼了,下下来之后自己改了好多代码才弄好的图片上传,放到网上去之后就用不起来了!!!为什么用的时候不告诉我是收费的!!!这个公司就是贱!!!不让用拉倒,去别别的插件用!!!
其实收费还可以理解。问题是这也太贵了。我也是改了很多代码,好不容易和自己的站点融合了,放到服务器上,提示未授权,问了该公司客服,才知道要收费的。真坑。