精华内容
下载资源
问答
  • move_uploaded_file(public/upload/files/2019/04-17/\开密二次开发.rar): failed to open stream: Invalid argument 失败的原因大致猜到是编码问题.保存文件时,需要将中文由utf8转为gb2312。 <?php $...
  • move_uploaded_file() 函数将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false。 语法 move_uploaded_file(file,newloc) 参数 描述 file 必需。规定要移动的文件。 newloc ...
  • NULL 博文链接:https://jickcai.iteye.com/blog/411719
  • <p>The problem is that in this code only the last <code>move_uploaded_file</code> works and uploads an image. <p>Can you explain me why the first <code>move_uploaded_file</code> does not work? ...
  • move_uploaded_file(); 函数,移动上传的文件,到你的网站目录. 再echo '<img src='' />' 显示你上传的文件. $img1=uploadimg(idcard1); echo $img1; //图片上传 函数 function uploadimg($filename){ $fi=$_...
  • move_uploaded_file 函数

    千次阅读 2019-03-12 20:20:56
    查看更多 https://www.yuque.com/docs/share/70b59e8d-3b81-4d71-acfc-8eaa1943107b
    展开全文
  • 提示:跨域上传图片 move_uploaded_file 返回false: 例如:在a.com下请求a.com a.php接口 a.com下a.php 接受file文件 然后通过a.php 请求 b.com 下的 b.php 在b.php总进行图片上传操作 @a.php //设置请求参数 ...

    问题描述:

    提示:跨域上传图片 move_uploaded_file 返回false:
    例如:在a.com下请求a.com a.php接口 a.com下a.php 接受file文件 然后通过a.php 请求 b.com 下的 b.php 在b.php总进行图片上传操作

    @a.php	
    		//设置请求参数
            if(isset($_REQUEST['uploadImgFun'])){
    			$post_data['file'] = $_FILES['file'];
    			$post_data['fun'] = $_REQUEST['uploadImgFun'];
    			$post_data['kname'] = $_REQUEST['kname'];
    		}
    		$cookie = $_COOKIE;
    		$ch = curl_init();
    		curl_setopt($ch, CURLOPT_URL, $url);
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    		// 我们在POST数据哦!
    		curl_setopt($ch, CURLOPT_POST, 1);
    		// 把post的变量加上
    		curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
    		curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    		$output = curl_exec($ch);
    		curl_close($ch);
    		echo $output;
    
    @b.php
    	//接口接受文件
    	if($_REQUEST['fun'] == "uploadFile3")
        {
            $file = $_REQUEST['file'];
            //调用图片上传方法
            echo ActivityUploadPic($file);
        }
        function ActivityUploadPic($file,$chycy,$name,$kname)
    	{
        $date = date('Y-m-d');
        $filename = time().rand(1000,9999);
        preg_match('|\.(\w+)$|', $file["name"], $ext);
    
        $ext = strtolower($ext[0]);
    	//限制图片上传格式
        if (!in_array($file["type"], array("image/gif","image/jpeg","image/pjpeg","image/jpg", "image/png"))) {
            return array("code" => 2, "msg" => "上传文件格式不正确");
        }
    	//限制图片上传大小
        if ($file["error"] > 0) {
            return array("code" => 2, "msg" => "上传错误");
        }
    
        $path = ""; //上传路径
        //判断路径是否存在
        if(is_dir($path)){
            @unlink($path . $ext);
        }else{
        //创建路径 给最高权限
            mkdir(iconv("UTF-8","GBK",$path),0777,true);
        }
        $result = move_uploaded_file($file["tmp_name"], $path . "/".$filename.$ext);
        if($result)
        {
            $animal = array('code'=>1,'msg'=>'','count'=>'','data'=>"");//成功时返回 
            return json_encode($animal);
        }else
        {
            $animal = array('code'=>0,'msg'=>$result,'count'=>'','data'=>"");//失败时返回
            return json_encode($animal);
        }
    }
    

    原因分析:

    提示:move_uploaded_file一直返回false:
    分析:

    1. 文件传输是否有问题
    2. 是否是权限问题

    解决方案:

    1. 对比上传文件参数
    @正常请求返回接受的参数
    	array (size=5)
    	  'name' => string 'u=1951776306,1562297874&fm=26&gp=0.jpg' (length=38)
    	  'type' => string 'image/jpeg' (length=10)
    	  'tmp_name' => string 'C:\Users\Administrator\AppData\Local\Temp\php1245.tmp' (length=53)
    	  'error' => int 0
    	  'size' => int 25195
    
    @跨域请求返回接受的参数
    	 'file' => 
        array (size=5)
          'name' => string 'u=1951776306,1562297874&fm=26&gp=0.jpg' (length=38)
          'type' => string 'image/jpeg' (length=10)
          'tmp_name' => string 'C:\Users\Administrator\AppData\Local\Temp\php12DC.tmp' (length=53)
          'error' => string '0' (length=1)
          'size' => string '25195' (length=5)
    

    通过参数对比我没发现有啥问题 跨域能正常接受文件 就是不能上传
    通过php文档可知:
    如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。
    如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。
    之后百度得出跨域上传文件需要通过form表单提交 但是form表单提交后有刷新 我没有进行测试,还有好多方法 比如ftp之类的

    解决:

    直到我看到这篇文章
    把图片转换成二进制 然后在通过文件写入的方式进行图片保存,很适合我现在的情况(改动的不需要太多)

    @解决代码
    //获取后缀
        $type = explode('.',$file['name']);
        $image = $file['tmp_name'];
        //只读方式打开图片文件
        $fp = fopen($image, "r");
        //读取文件(可安全用于二进制文件)
        $file = fread($fp, $file["size"]); //二进制数据流
    
        //获取时间
        $date = date('Y-m-d');
        //上传路径
        $dir_url = "";//路径
        //检测目录是否存在,不存在则建立目录
        if (is_dir($dir_url)) {
    
        } else {
            mkdir(iconv("UTF-8","GBK",$dir_url), 0777, true);
        }
        // 重新编辑文件名
        $filename = time().rand(1000,9999);
        //新图片的路径
        $newFilePath = $dir_url.'/'.$filename.'.'.$type[1];
        $data = $file;
        $newFile = fopen($newFilePath,"w"); //打开文件准备写入
        $result = fwrite($newFile,$data); //写入二进制流到文件
        fclose($newFile); //关闭文件
        if($result)
        {
            $animal = array('code'=>1,'msg'=>'','count'=>'','data'=>"{$dir_url}/{$newFilePath}");
            return json_encode($animal);
        }else
        {
            $animal = array('code'=>0,'msg'=>$result,'count'=>'','data'=>"{$dir_url}/{$newFilePath}");
            return json_encode($animal);
        }
    

    完美解决 perfect

    展开全文
  • <p>This attempt of placing the file directly using the <code>file_put_contents</code> works fine and the image file is perfect just as uploaded but using the <code>move_uploaded_file</code> leaves a ...
  • php关于第一次使用move_uploaded_file函数报错解决 在学习php的过程中,很多时候在本地windows的环境下跑通的代码上传到云服务器(我使用的云主机的系统Centos)上的时候发生一些自己不敢相信的事情。 出现这种问题...

    php关于第一次使用move_uploaded_file函数报错解决

    在学习php的过程中,很多时候在本地windows的环境下跑通的代码上传到云服务器(我使用的云主机的系统Centos)上的时候发生一些自己不敢相信的事情。

    出现这种问题可能是因为:
    1、权限不够
    2、文件太大(默认只能上传2M以内的文件)
    3、文件路径不对

    一步步排查
    先查文件太大问题(我这里是默认的文件目录)

    vim /etc/php.ini
    

    上传文件路径和上传文件大小
    上传文件路径和文件大小都改了,重启Apache2服务器。

    service httpd restart 
    

    排除2.3两项,还是报错
    报错failed to open stream: Permission denied

    解决1的问题

    原因在于文件的权限问题。以apache为例,当文件上传的时候,首先会上传到/tmp目录中临时保存,move_uploaded_file函数实施了一个copy操作,把上传好的临时文件移到(复制)我们指定的文件夹中,不过,这个动作是由谁来执行的呢?是运行apache的用户,这个用户在apache的配置文件中进行了规定。如果保存文件的目标目录对于该用户而言,没有可写权限的话,上传就会失败,系统会记录一个没有权限的错误。
    我们通过ftp连接到服务器上,而一般这个ftp操作的用户和apache的运行用户是不同的,因此,通过ftp软件进行的操作,和用php进行的操作,是由不同的用户完成的,权限上也可能存在隔离。比如通过ftp上传的文件权限为600时,只有自己有权限,这个时候apache对该文件没有任何权限,所以对网站程序而言,该文件相当于没有。如果apache和ftp的运行用户在同一个用户组,那么660可以解决问题,而如果不在同一个用户组,那么就完蛋了,必须666以上才能解决问题。

    chmod 命令修改权限问题

    假设我的文件夹在主目录里,地址为 /var/home/dengchao/cc 。假设我要修改文件权限为777,则在终端输入 chmod 777 /var/home/userid/cc 文件夹的权限就变为了777。
    我这里tmp文件夹是上面自己设置的,上传服务器临时存文件的路径是**/var/www/tmp**
    临时文件会存在这里。

    1.修改上传文件的临时目录
    chmod 777 /var/www/tmp
    

    还是报错

    2.修改PHP文件网页upload目录
    chmod 777 /var/www/html/Test/upload
    

    我这里的upload是自己目录设置的,和我的index.php文件存在同一目录的。

    3.没有报错,查看文件保存成功。
    cd /var/www/html/Test/upload
    

    成功上传
    附上代码:

        <?php
        // 允许上传的图片后缀
        $allowedExts = array("gif", "jpeg", "jpg", "png");
        $temp = explode(".", $_FILES["file"]["name"]);
        echo $_FILES["file"]["size"];
        $extension = end($temp);     // 获取文件后缀名
        if ((($_FILES["file"]["type"] == "image/gif")
        || ($_FILES["file"]["type"] == "image/jpeg")
        || ($_FILES["file"]["type"] == "image/jpg")
        || ($_FILES["file"]["type"] == "image/pjpeg")
        || ($_FILES["file"]["type"] == "image/x-png")
        || ($_FILES["file"]["type"] == "image/png"))
        && ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
        && in_array($extension, $allowedExts))
        {
        	if ($_FILES["file"]["error"] > 0)
        	{
        		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
        	}
        	else
        	{
        		echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
        		echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
        		echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        		echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
        		
        		// 判断当期目录下的 upload 目录是否存在该文件
        		// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
        		if (file_exists("upload/" . $_FILES["file"]["name"]))
        		{
        			echo $_FILES["file"]["name"] . " 文件已经存在。 ";
        		}
        		else
        		{
        			// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
        			move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
        			echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
        		}
        	}
        }
        else
        {
        	echo "非法的文件格式";
        }
        ?>
    
      
        
    
    
    展开全文
  • 首先看看这几行代码,了解一下环境: if(move_uploaded_file($fileInfo[‘tmp_name’], $destination) { $mes=“文件上传成功”; } else { $mes=“文件移动失败”; } 结果返回 文件移动失败 今天下午查找了不少...

    错误截图:
    在这里插入图片描述
    转载自:https://blog.csdn.net/u011140030/article/details/71082463?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

    move_upload0ed_file()函数返回参数较少,但是引起出错的原因却有很多,所以对于初学者难免会遇到问题。

    出错原因大概有以下三点:
    1.如果检测到文件不是来自post上传,这个文件不会执行cp工作;

    2.目的路径找不到;

    3.目的路径权限非执行进程课读写(这条是本人下午发现的);
    首先看看这几行代码,了解一下环境:

    if(move_uploaded_file($fileInfo[‘tmp_name’], $destination) {
    $mes=“文件上传成功”;
    } else {
    $mes=“文件移动失败”;
    }

    结果返回 文件移动失败
    今天下午查找了不少资料,大概有以下几种说法:

    1.应该用绝对路径,本人的参数 $destination 值为 uploads,加上绝对路径为 /home/llawlite/imooc/shopImoc/test/uploads 经验证不是这个问题。

    2.应该在路径前加上 ROOT, d e s t i n a t i o n = R O O T . destination=ROOT. destination=ROOT.destination; 经验证无效;

    最后,只能自己摸索,发现这是一个Linux文件权限的问题。

    首先,在脚本里post过来的文件放在了临时目录里(tmp_dir),然后拷贝到目的路径。

    如果目的路径没有写文件的权限,那么函数的执行是会出错的。

    今天下午做了如下尝试,首先把目的路径更改为/tmp下  d e s t i n a t i o n = " / t m p " . destination="/tmp". destination="/tmp".fileInfo[‘name’],结果函数成功执行。

    经比较发现/tmp的权限是 drwxrwxrwx ,而我的 /home 权限为 drwxr-xr-x ,问题一目了然。

    下面修改/home的权限 chmod -R 777 /home (对整个目录以及子目录所有文件更改了权限)。

    再把路径改为原来的路径,经验证问题已经解决。

    展开全文
  • 四种情况: 1:查看$_FILES接收到的资源是否有效 2:查看上传的目录是否有效 3:查看上传的目录是否有权限(目录权限要给上777,755不可以) 4:查看服务器空间是否足够(一般这种情况下,文件会上传到服务器,...
  • PHP使用move_uploaded_file()上传文件的时候: 如果上传到/tmp目录下则显示成功。 如果上传到其他目录下则失败。 网上都是是权限的问题,可是我已经将整个文件夹权限 设置成了chmod -R 777 还是失败的。 请问这...
  • 在学习PHP如何上传文件时,使用move_uploaded_file方法时:产生两个Warning:file to open stream 和Unable to move Warning: move_uploaded_file(D:/www/2737/upfile/test.txt): failed to open stream: No such ...
  • PHP 上传文件 move_uploaded_file() HTML <form action="php/php_form.php" method="post" enctype="multipart/form-data"> 名字:<input type="text" name="fname"/><br/> 年龄:<input ...
  • <pre><code>if (move_uploaded_file($_FILES[$file_array_name]['tmp_name'], $target)) { some code...... header("Refresh: 2; url=some url"); } else { ini_set('display_errors', 1); ini_set('...
  • 一种可能是目录权限不够 若权限是够的,检查form中有没有加上 enctype="multipart/form-data" 属性
  • move_uploaded_file

    2017-04-08 00:23:00
    move_uploaded_file() 函数将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false。 语法 move_uploaded_file(file,newloc) 参数 描述 file 必需。规定要移动的文件。 newloc 必需。规定文件...
  • move_uploaded_file false 原因 要做一个移动替换图片的功能,使用了move_uploaded_file函数,但是每次都失败, 使用var_dump()打印结果是 bool(false), 没有发现更多错误信息, 于是尝试了以下方式, 一、把旧图片...
  • <p>I am trying to move one image to new folder <strong>move_uploaded_file</strong> is returning 1 but the file is missing, I am working on localhost with XAMPP <pre><code>$name = basename($_FILES['...
  • move_uploaded_file ( $tmp, $path . $actual_image_name ); </code></pre> <p>its working fine on my local system both <code>WAMP</code> and <code>XAMPP</code> application, but on my windows web server ...
  • <p>I've used move_uploaded_file successfully in the past, however I'm having an issue with permissions I believe with a new server I'm testing this on. I've created a folder named "uploads" for the ...
  • 代码 <?php if($_FILES['file']['error'] > 0) { echo '上传遇到错误,'; switch ($_FILES['file']['error']) { case 1: echo '上传的文件超过了php.ini中upload_m...
  • 前段时间的0CTF中有道题,其中涉及到了文件上传,并用到了move_uploaded_file()函数,但是有一个小问题不太明白,之后又继续分析了一段时间,这里给出关键代码:case 'upload': if (!isset($_GET["name"])...
  • PHP的move_uploaded_file()出错解决

    千次阅读 2018-08-02 21:34:59
    今天用的PHP的move_uploaded_...move_uploaded_file(D:\ git_prj \ xx \ think \ Public \ attachment / upload / staffworking年休假说明.docx):无法打开流:无效的参数。 在网上搜了下原因,LINUX下一般是由...
  • 在php里,move_uploaded_file函数的作用是将上传的文件移动到新位置。...该函数的执行若成功,则返回 true,否则返回 false。...1.如果file不是合法的上传文件,不会出现任何操作,move_uploaded_file(...
  • move_uploaded_file保存失败后找错,先使用了try catch,但是没输出信息,才知道该函数在php中是警告属于error,不属于exeption,因此不能通过简单的if(!...)处理,外层的try catch仅仅捕获了Exception,没有捕获Error...
  • Warning: move_uploaded_file 中文上传问题

    千次阅读 2019-09-16 22:51:30
    Warning: move_uploaded_file(../upload/attach/sean/������վ����.doc) [function.move-uploaded-file]: failed to open stream: No such file or directory ...
  • PHP is_uploaded_file()、move_uploaded_file() 函数is_uploaded_file() 函数判断指定的文件是否是通过 HTTP POST 上传的。语法is_uploaded_file(file) 参数 描述 file 必需。规定要检查的文件。 说明如果 file 所...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,934
精华内容 6,773
关键字:

move_uploaded_file