全部, 我正在使用HTML5上传器上传一些图片。这是将数据发送到我的PHP处理脚本的文件的一部分:
var ajax = $.ajax({
url: ajaxurl,
//dataType: options.ajaxDataType || 'json',
type: options.ajaxType || 'POST',
cache: false,
data: { name: $file.data('filename'), filename: $file.data('file'), file: evt.target.result, data: options.data, action: 'test_upload' },
headers: options.ajaxHeaders,
从上传者他们使用以下代码处理文件上传:
if (!empty($_POST)) {
$error = false;
$absolutedir = dirname(__FILE__);
$dir = '/tmp/';
$serverdir = $absolutedir.$dir;
$tmp = explode(',',$_POST['file']);
$file = base64_decode($tmp[1]);
$extension = strtolower(end(explode('.',$_POST['filename'])));
$filename = $_POST['name'].'.'.$extension;
//$filename = $file.'.'.substr(sha1(time()),0,6).'.'.$extension;
$handle = fopen($serverdir.$filename,'w');
fwrite($handle, $file);
fclose($handle);
$response = array(
"result" => true,
"url" => $dir.$filename.'?'.time(), //added the time to force update when editting multiple times
"filename" => $filename
);
echo json_encode($response);
//echo json_encode(array('result'=>true));
}
但是,我希望Wordpress能够处理我的文件上传,所以我尝试使用以下函数来处理文件上传:
function test_upload()
{
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
$filename = $_POST['filename'];
$attachment_id = media_handle_upload( $filename, '1' );
print_r($attachment_id);
}
我正在尝试传递文件名,因为第一个参数的media_handle_upload codex(在我的示例$filename
中)说明了这一点:
Index into the $_FILES array of the upload
如何使用AJ成功使用WP上传此文件来传递POST变量而不是$ _FILES变量?
编辑:当我这样做的时候,我得到一个WP_ERROR,说文件是空的。我创建了一个带有JS代码的pastebin来处理文件处理表单,以便您可以看到文件名的来源。 http://pastebin.com/Shc4KqX1
这是文件输入:
<input type="file" name="file" />
答案 0 :(得分:0)
<input id="uploadBtn" type="file" class="upload" name="pimage">
功能media_handle_upload在wordpress中上传您的图片
使用$filename = $_POST['filename']['temp_name'];
而不是$filename = $_POST['filename'];
if ( !empty( $_FILES["pimage"]["name"] ) ) {
$attachment_id = media_handle_upload( 'pimage', 0 );
}