Php 我试图上传一个文件到wordpress,但我有不同的问题

Php 我试图上传一个文件到wordpress,但我有不同的问题,php,wordpress,image-uploading,Php,Wordpress,Image Uploading,我正在尝试从Web服务接收文件并将其保存到wordpress,但我有以下问题 一些文件将被上传,但它们已损坏,我无法打开它们,尽管它们的Web服务地址是正确的 它显示了以下错误(虽然它显示了这些错误,但还是上传了文件,这很好:D,但我想知道为什么我会收到它们) 注意:第22行的/Applications/MAMP/htdocs/wordpress/wp-load.php中已经定义了常量ABSPATH 致命错误:在第95行的/Applications/MAMP/htdocs/wordpress/w

我正在尝试从Web服务接收文件并将其保存到wordpress,但我有以下问题

  • 一些文件将被上传,但它们已损坏,我无法打开它们,尽管它们的Web服务地址是正确的
  • 它显示了以下错误(虽然它显示了这些错误,但还是上传了文件,这很好:D,但我想知道为什么我会收到它们)
  • 注意:第22行的/Applications/MAMP/htdocs/wordpress/wp-load.php中已经定义了常量ABSPATH

    致命错误:在第95行的/Applications/MAMP/htdocs/wordpress/wp content/plugins/myproject/Myclasses/retrieve_2334.php中调用未定义的函数wp_generate_attachment_metadata()

    我的代码:

        ini_set( 'display_errors', TRUE );
        error_reporting( E_ALL );
        require("/Applications/MAMP/htdocs/wordpress/wp-load.php");
        $pos = strrpos($Address, "&f=");
        $loc = substr($Address, $pos + 3);
    
        $Address = "http://dev.piction.com/v60/" . $Address;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 0);
        curl_setopt($ch, CURLOPT_URL, $Address);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        curl_close($ch);
    
    
    
        $upload_dir = wp_upload_dir();
        $location= $upload_dir['basedir']. "/" . $loc;
    
    try{
        $location= $upload_dir['path']. "/" . $loc;
        $wp_filetype = wp_check_filetype($loc, null );
        $fullpathfilename = $upload_dir['path'] . "/" . $loc;
    
    
        $fileSaved = file_put_contents($location, $output);
                    if ( !$fileSaved ) {
                        throw new Exception("The file cannot be saved.");
                    }
                    $attachment = array(
                         'post_mime_type' => $wp_filetype['type'],
                         'post_title' => preg_replace('/\.[^.]+$/', '', $loc),
                         'post_content' => '',
                         'post_status' => 'inherit',
                         'guid' => $upload_dir['url'] . "/" . $loc
                    );
                    $attach_id = wp_insert_attachment( $attachment, $fullpathfilename, 0 );
                    if ( !$attach_id ) {
                        throw new Exception("Failed to save record into database.");
                    }
                    //require_once(ABSPATH . "wp-admin" . '/includes/image.php');
                    $attach_data = wp_generate_attachment_metadata( $attach_id, $fullpathfilename );
                    wp_update_attachment_metadata( $attach_id,  $attach_data );
    
            } catch (Exception $e) {
                    $error = '<div id="message" class="error"><p>' . $e->getMessage() . '</p></div>';
                }
        echo 'Photo is uploaded';
    
    ini\u集('display\u errors',TRUE);
    错误报告(E_全部);
    要求(“/Applications/MAMP/htdocs/wordpress/wp load.php”);
    $pos=strrpos($Address,&f=“);
    $loc=substr($Address,$pos+3);
    $Address=”http://dev.piction.com/v60/" . $地址;
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_POST,0);
    curl_setopt($ch,CURLOPT_URL,$Address);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $output=curl\u exec($ch);
    卷曲关闭($ch);
    $upload_dir=wp_upload_dir();
    $location=$upload_dir['basedir']。"/" . $loc;
    试一试{
    $location=$upload_dir['path']。“/”$loc;
    $wp\u filetype=wp\u check\u filetype($loc,null);
    $fullpathfilename=$upload_dir['path'].“/”$loc;
    $fileSaved=文件内容($location,$output);
    如果(!$fileSaved){
    抛出新异常(“无法保存文件”);
    }
    $attachment=array(
    'post_mime_type'=>$wp_filetype['type'],
    “post\u title”=>preg\u replace('/\...[^.]+$/','.$loc),
    '发布内容'=>'',
    “post_status”=>“inherit”,
    'guid'=>$upload_dir['url']。“/”$loc
    );
    $attach\u id=wp\u insert\u attachment($attachment,$fullpathfilename,0);
    如果(!$attach\u id){
    抛出新异常(“未能将记录保存到数据库。”);
    }
    //require_once(ABSPATH.wp admin.'/includes/image.php');
    $attach\u data=wp\u生成\u附件\u元数据($attach\u id,$fullpathfilename);
    wp_更新_附件_元数据($attach_id,$attach_data);
    }捕获(例外$e){
    $error='。$e->getMessage()。

    '; } echo“上传照片”;
    看起来确实包含了两次文件,这可以解释为什么会出现“已定义”错误


    尝试删除代码第三行中的
    require()
    语句,看看它是否有效,因为该文件似乎已经包含在脚本的其他地方。

    尝试更改为
    require_一次(“/Applications/MAMP/htdocs/wordpress/wp load.php”)当您得到已经定义的通知时,它可能表示您已经包含了wp-load.php


    您还需要取消注释行
    //require(ABSPATH.'wp admin/includes/image.php')
    要能够使用
    wp\u生成附件\u元数据()

    尝试更改为
    require\u一次(“/Applications/MAMP/htdocs/wordpress/wp load.php”)当您得到已经定义的通知时,它可能表示您已经包含了wp-load.php。您还需要取消注释行
    //require(ABSPATH.'wp admin/includes/image.php')能够使用wp_生成_附件_metadata@kjetilh,currect请在答案中键入