从前端上传图片并获取其网址

时间:2013-06-27 19:11:02

标签: wordpress upload

嗨我从前端上传文件但现在代码只获取图片附件ID我想获取图片网址。

   function agp_process_woofile($file, $post_id){

     if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) __return_false();


  require_once(ABSPATH . "wp-admin" . '/includes/image.php');
  require_once(ABSPATH . "wp-admin" . '/includes/file.php');
  require_once(ABSPATH . "wp-admin" . '/includes/media.php');

    $attachment_id = media_handle_upload($file, $post_id);

  add_post_meta($post_id, '_file_paths', $attachment_id);

  $attachment_data = array(
    'ID' => $attachment_id,
    'post_excerpt' => $caption
  );

  wp_update_post($attachment_data);

  return $attachment_id;

} 

请参阅attachment_id我希望从此函数获取url并将该url更新为“_file_paths”post meta

3 个答案:

答案 0 :(得分:6)

对于前端的上传图片,只需创建简单的帖子

<form method="post" enctype="multipart/form-data">
<input type="file" name="imagefile" />
<input type="submit" name="Submit" value="Submit" />
</form>

在wordpress媒体上提交表单上传图片作为附件后如下。

if($_POST){
if (!function_exists('wp_generate_attachment_metadata')){
    require_once(ABSPATH . "wp-admin" . '/includes/image.php');
    require_once(ABSPATH . "wp-admin" . '/includes/file.php');
    require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if($_FILES)
{
    foreach ($_FILES as $file => $array)
    {
        if($_FILES[$file]['error'] !== UPLOAD_ERR_OK){return "upload error : " . $_FILES[$file]['error'];}//If upload error
        $attach_id = media_handle_upload($file,$new_post);
        echo wp_get_attachment_url($attach_id);//upload file URL
    }
}
}

答案 1 :(得分:3)

你好找到了解决方案,所以和你们一起喝酒:)

function agp_process_woofile($files, $post_id, $caption){


  require_once(ABSPATH . "wp-admin" . '/includes/image.php');
  require_once(ABSPATH . "wp-admin" . '/includes/file.php');
  require_once(ABSPATH . "wp-admin" . '/includes/media.php');

    $attachment_id = media_handle_upload($files, $post_id);

 $attachment_url = wp_get_attachment_url($attachment_id);
  add_post_meta($post_id, '_file_paths', $attachment_url);

    $attachment_data = array(
    'ID' => $attachment_id,
    'post_excerpt' => $caption
  );

  wp_update_post($attachment_data);

  return $attachment_id;

} 

答案 2 :(得分:1)

使用默认的wordpress函数wp_handle_upload请参考 http://codex.wordpress.org/Function_Reference/wp_handle_upload

这里是我的示例代码:

upload.html

<form action="" enctype="multipart/form-data" id="form" method="post" name="form">
<div id="upload">
<input id="file" name="file" type="file">
</div>
<input id="submit" name="submit" type="submit" value="Upload">
</form>

<div id="detail">
<div id="preview" style="height:100px;width:100px; display:none">
<img id="previewimg" src="" style="height:100px;width:100px;">
<img id="deleteimg"    src="<?php echo plugins_url( '/images/remove.png'__FILE__);?>">
</div>

<div id="message">
<?php include "Function /upload.php";?> 
</div>
</div>

upload.php的

<?php
include_once ABSPATH . 'wp-admin/includes/media.php';
include_once ABSPATH . 'wp-admin/includes/file.php';
include_once ABSPATH . 'wp-admin/includes/image.php';
require_once (ABSPATH . 'wp-includes/pluggable.php');
if (isset ( $_POST ['submit'] )) {
    if (! function_exists ( 'wp_handle_upload' ))
        require_once (ABSPATH . 'wp-admin/includes/file.php');
    $uploadedfile = $_FILES ['file'];
    if (! empty ( $uploadedfile ['name'] )) {
        $upload_overrides = array (
            'test_form' => false 
        );
        $movefile = wp_handle_upload ( $uploadedfile, $upload_overrides );
        if ($movefile) {
            echo "File is valid, and was successfully uploaded.\n";
        } else {
            echo "Possible file upload attack!\n";
        }
    } else {
        echo "Please select the image to upload";
    }
}
?>

upload.js`

 jQuery(document).ready(function() {
     // Function for Preview Image.
     jQuery(function() {
         jQuery(":file").change(function() {

             if (this.files && this.files[0]) {
                 var reader = new FileReader();
                 reader.onload = imageIsLoaded;
                 reader.readAsDataURL(this.files[0]);
             }
         });
     }); 
     function imageIsLoaded(e) {
         jQuery('#message').css("display", "none");
         jQuery('#preview').css("display", "block");
         jQuery('#previewimg').attr('src', e.target.result);
     };
     // Function for Deleting Preview Image.
     jQuery("#deleteimg").click(function() {
         jQuery('#preview').css("display", "none");
         jQuery('#file').val("");
     });
     // Function for Displaying Details of Uploaded Image.
     jQuery("#submit").click(function() {
         jQuery('#preview').css("display", "none");
         jQuery('#message').css("display", "block");
     });
 });`