Php 图像不会上载到WordPress中专门创建的文件夹
我试图创建一个文件夹来存储我的所有图像,但它不会上载到我安装的主题中的特定上载文件夹中 这是我的密码:Php 图像不会上载到WordPress中专门创建的文件夹,php,wordpress,Php,Wordpress,我试图创建一个文件夹来存储我的所有图像,但它不会上载到我安装的主题中的特定上载文件夹中 这是我的密码: if(isset($_FILES['file']['tmp_name'])) { $num_files = count($_FILES['file']['tmp_name']);//count file upload for($i=0; $i<$num_files; $i++) { if(!is_uplo
if(isset($_FILES['file']['tmp_name']))
{
$num_files = count($_FILES['file']['tmp_name']);//count file upload
for($i=0; $i<$num_files; $i++)
{
if(!is_uploaded_file($_FILES['file']['tmp_name'][$i]))
{
echo "no file upload!!";
}else
{
if(@copy($_FILES['file']['tmp_name'][$i], "/upload/".$_FILES['file']['name'][$i]))
{
$path = "upload/".$_FILES['file']['name'][$i];
//$sql = "insert into tblImage value ('".$path."')";
}else
{
echo "cant upload";
}
}
}
}
if(isset($\u FILES['file']['tmp\u name']))
{
$num_files=count($_files['file']['tmp_name']);//count文件上载
对于($i=0;$i)来说,很难准确地找出问题所在,因为我不知道您的设置,但请尝试以下方法:
在这种情况下,不建议使用@copy
,尤其是当您试图找出问题所在时。copy会在失败时返回false,并在异常情况下显示其他错误消息,除非您在它前面加上@
。例如,如果磁盘已满,它将以静默方式失败。只需copy
这更有用
您的文件命名至少很难破译。具体来说,您使用的路径是什么?PHP文件操作(如copy
)需要精确的路径信息。您的路径/upload/
,即upload/
之后的路径,指的是来自某个任意位置的相对路径,该路径可能会发生变化。要解决此问题,请参见图找到一个好的绝对路径。如果你上传到WP uploads,从那里开始构建
除非您以后绝对需要从原始位置复制文件,否则请移动它,而不是复制它。请记住,您将把它移动到uploads文件夹,这样以后它仍然可以在其他地方使用。这也可以帮助您
关于如何调试你所拥有的东西,有一些很棒的评论(比如来自@kabiir的评论)。如果没有一些调试信息,很难准确地找出到底出了什么问题
尝试:
if(isset($\u FILES['file']['tmp\u name'])){
对于($i=0;$i
这段代码将输出到您的日志(或任何您有错误记录指向的地方)每个文件的源文件+路径、上载的文件名和目标文件+路径
除非你正在做一些非常特别的事情,否则你应该在不重写的情况下照顾好你的所有需求。完成后,它会调用wp\u handle\u upload
filter。钩住过滤器链的末端来执行SQL或其他任何操作。还有许多插件可以完成你正在尝试做的事情,避免你不得不编写i别自欺欺人
作为旁注,您不应该在WP中完全手工创建SQL。使用类和函数。这还允许您使用$wpdb->prefix
,这是表的前缀。(您已经这样做了,对吗?)如果您试图将它们上载到主题文件夹中,您可能需要使用此功能。请在@copy destination中添加前缀,以确保将其复制到正确的路径。有关详细信息,请查看链接。我已经使用了该功能,但它不起作用。是否启用了调试?请尝试错误日志()在每条语句之后查看发生了什么。尝试输出所有变量以查看哪里出了问题。在if语句中出现错误\u log()?我再次尝试了get\u template\u directory\u uri()。它跳转到else语句,这是无法上载的语句。请查看文档中的错误\u log()然后尝试输出for循环中的所有变量。日志文件位于名为“debug”的wp content目录中。
if(isset($_FILES['file']['tmp_name'])) {
for ($i = 0; $i < count($_FILES['file']['tmp_name']); $i++) {
$file = $_FILE['file']['tmp_name'][$i];
error_log('source: ' . $file);
if (is_uploaded_file($file) && isset($_FILE['file']['name'][$i])) {
$name = $_FILE['file']['name'][$i];
error_log('uploaded name: ' . $name);
$destination = trailingslashit(wp_upload_dir()) . $name;
error_log('destination: ' . $destination);
if (!move_uploaded_file($source, $destination)) {
echo 'failed to move file.';
continue;
}
// Now $destination contains where the file was moved to.
}
}
}