2012-09-22 66 views
2

我已经制作了用于上传远程文件的脚本,但文件未上传到服务器,并且var1的数据库保持为空。这是我的代码。上传不会产生任何结果

HTML:

<form enctype="multipart/form-data" id="form1" method="post" action=""> 
    <p><label>Upload songs</label>  
    <input type="text" name="song"><input type="submit" value="Submit" class="button"></p> 
</form> 

PHP:

$uri = copy1_file($_POST['song']); 
$story['v1'] = $uri; 

     $url = $_POST['song']; 
    $file = fopen ($url, "rb"); 
    if ($file) { 
     $newf = fopen ($uri, "wb"); 
     if ($newf) { 
      while(!feof($file)) { 
       fwrite($newf, fread($file, 1024 * 8), 1024 * 8); 
      } 
     } 
    } 
    if ($file) { 
     fclose($file); 
    } 
    if ($newf) { 
     fclose($newf); 
    } 
    else { 
     return false; 
    } 
} 

我已经检查了错误日志,但没有什么是未来。我在哪里做错了?

+1

如果您想接收用户的URL,请将'type =“file”'更改为'type =“text”'。 – undone

+0

@death对不起,其类型=“文本”只有type =文件将要求从用户计算机浏览optin – payal

+0

@payal'type =“file”'打开一个对话框,提示用户从用户计算机中选择一个文件,不想要,如评论 – haynar

回答

1

PHP File Uploads阅读起来。

试试这个调试脚本:

var_dump($_FILES); 

你看到什么了吗?

编辑:好吧,我看到你更清晰定义的“远程文件”。你必须使用“文本”输入接收URL。你是如何绕过标准文件选择对话框的?

如果您只是将<input/>类型更改为“文本”,那么您的代码看起来就像原样一样工作。

编辑2:我注意到你更新你的岗位上有<input type="text"/>所以你已经有一个URL使它通过你的脚本。检查您的主机是否已启用allow_url_fopen。如果没有,您的网址将不会被fopen()检索到。您将不得不使用cURL

编辑3:难道你的copy1_file函数从未实际返回uri吗?该函数中的代码有很多错误。例如:copy1_file正在接收一个URL,那么它为什么有顶部$file['name']?后来直接参考$_POST?还有更多的错误。仔细检查并纠正它们,然后它应该正常工作,因为您知道fopen(url)已知可与您的主机配合使用。

+0

对不起,我有wriitten type = file,但它是文本我的主机允许fopen,但它不工作,我检查。感谢guide.there没有主机的限制,因为我曾多次使用fopen没有任何问题 – payal

+0

我提出了一些更多的建议。 'copy1_file'函数中有很多编码错误。 – jimp

0

你需要使用$_FILES阵列来访问,而不是$_POST

这里上传的文件是用于处理文件上传的代码示例:

$pathToSaveFile = '...'; // this is the file path where the uploaded file should be saved 
move_uploaded_file($_FILES['song']['tmp_name'], $pathToSaveFile); 

UPDATE

,如果你只需要到通过URL上传文件,那么你不需要<input type="file">,只需使用简单的<input type="text">,并在用户插入URL并提交后,您可以使用file_get_contentsfile_put_contents功能:

file_put_contents($pathToSavePath, file_get_contents($_POST['song'])); 

能够使用这些功能,以下载远程文件,确保PHP的allow_url_fopen选项设置为TRUE

+0

中所解释的,我尝试_files,但它不起作用 – payal

+0

@payal它是什么意思“远程URL不是来自用户的计算机”? – haynar

+0

远程文件意味着只是给网址,它不会从用户计算机上传 – payal

相关问题