我尝试创建一个文件夹来存储我的所有图片,但不会在我安装的主题中的特定上传文件夹中上传。
这是我的代码:
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";
}
}
}
}
答案 0 :(得分:0)
很难弄明白确切出了什么问题,因为我不知道你的设置,但尝试这些事情:
@copy
,尤其是当您试图弄清楚出了什么问题时。复制将在失败时返回false并在特殊情况下显示其他错误消息,除非您在@
前面添加前缀。例如,如果您的磁盘已满,它将以静默方式失败。仅copy
可能对此更有用。copy
这样的PHP文件操作需要精确的路径信息。您的/upload/
之后的upload/
路径指的是某个相对于某个地方的相对内容,可能会发生变化。要解决这个问题,找出一条好的绝对路径。如果您要上传到WP上传,请从wp_upload_dir
开始,然后从那里构建。move_uploaded_file()
。尝试:
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.
}
}
}
此代码将输出到您的日志(或您指向错误日志记录的任何其他位置)源文件+路径,上传的文件名和目标文件+路径,每个文件。
除非您有非常特别的事情,否则wp_handle_upload()
应该照顾您的所有需求而不会重写此内容。完成后,它会调用wp_handle_upload
过滤器。挂钩到该过滤器链的末尾以执行SQL或其他任何操作。还有许多插件可以完成你正在尝试做的事情,并且不必自己编写代码。
作为旁注,你不应该在WP中完全手工创建SQL。使用wpdb
类,$wpdb->prepare()
功能。这也允许您使用$wpdb->prefix
,这是您表格的前缀。 (你<{3}},对吗?)