我使用了magento mvc框架,并尝试使用AJAX上传画布ToDataURL图像。这是我的控制器
public function uploadImgAction() {
$mediaUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
$message = '';
$filenames = array();
$imagename = '';
$successCount = 0;
$time = date('m_d_Y_hia');
if(isset($_POST['email']) && !empty($_POST['email'])) {
$imagename = str_replace(array('@','.'), '_', $_POST['email']).'_';
} else {
$imagename = 'unknown_user_';
}
if (isset($_FILES) && !empty($_FILES)) {
foreach ($_FILES as $key => $value) {
try {
$uploader = new Varien_File_Uploader($key);
$uploader->setAllowedExtensions(array('png', 'jpg','gif'));
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(false);
// Set upload folder name to current date
$currentTimestamp = Mage::getModel('core/date')->timestamp(time());
$folder_name_date = date('Y_m_d', $currentTimestamp);
// Create folder if not exsists
$path = Mage::getBaseDir('media') . DS . 'uploads' . DS . $folder_name_date;
if(!is_dir($path)){
mkdir($path, 0777, true);
}
// Image name
$ext = pathinfo($_FILES[$key]['name'], PATHINFO_EXTENSION);
$tmp = $imagename.'_'.$successCount.'_'.$time.'.'.$ext;
// Save file
$uploader->save($path, $tmp);
$newFilename = $uploader->getUploadedFileName();
// Append to return
$url = $mediaUrl.'uploads'.'/'.$folder_name_date.'/'.$tmp;
$filenames[] = $url;
$successCount++;
} catch (Exception $e) {
$message .= 'File upload error ';
}
}
// Number of files uploaded correctly
$message = $successCount . ' Files uploaded successfully';
} else {
$message .= 'File is not set properly ';
}
// Return json
if($successCount>1) {
echo $this->_uploadsJsonResponse($message,$filenames,'true');
} else {
echo $this->_uploadsJsonResponse($message,$filenames,'false');
}
}
我没有太多的AJAX知识,所以不能正常工作。这是我的AJAX。我认为AJAX中的数据传递方法设置不正确。需要知道如何在数组中附加表单数据。
var printImg = canvas.toDataURL({
format: 'png',
multiplier: multi,
left: (canvas.width - maskWidth)/2,
height: maskOriHeight/multi,
width: maskOriWidth/multi
});
var formdata = new FormData();
formdata.append('imagename[]', printImg[0]);
formdata.append('email', 'ex@gmail.com');
$.ajax({
type: "POST",
//url: "upload.php",
url: "http://example.com/api/index/uploadImg",
//data: {image: printImg, email: email}
data: formdata,
processData: false,
contentType: false
})
.done(function(respond) {
console.log('saved'+respond);
});
我是怎么做到的?
您应该这样做:
$.ajax({
type: "POST",
url: "/yourURL", <---// "nameController/nameAction"
data: data,
dataType: 'html',
success: function (result) {
alert("Your message sent!" + result);
}
});