yii ajax传值,Yii使用Ajax上传文件 - 传递数据数组(formData)

博客内容涉及在Yii框架中使用Ajax进行文件上传的实现。作者已经成功实现了文件上传,并将其保存到服务器上的特定文件夹,同时在数据库中创建了对应条目。遇到的问题是如何在Ajax请求中附加额外数据,如用户ID,以便关联到上传的文件。通过将文件数据和ID一起添加到formData对象,问题得到了解决,使得文件上传和相关数据传递都能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我一直抨击这一段时间,并且似乎一次性推进小步骤。我需要为用户提供一种通过Ajax上传文件的方式。我已经看到需要使用formData才能传递文件本身。使用这两个问题作为参考: Uploading file in Yii using ajax Yii ajax file uploadYii使用Ajax上传文件 - 传递数据数组(formData)

我有我的视图下面的代码页:

$form=$this->beginWidget('CActiveForm', array(

'id'=>'post-form',

'htmlOptions' => array('enctype' => 'multipart/form-data'),

));

echo '

' . $form->fileField($upload, 'image') . '
';

echo $form->error($upload, 'image');

echo CHtml::button("(+)",array('title'=>"Topic",'onclick'=>'js:upload_file(this);'));

$this->endWidget(); ?>

function upload_file(){

var fd = new FormData();

var e = document.getElementById("UploadedFiles_image");

fd.append("UploadedFiles[image]", $(e)[0].files[0]);

$.ajax({

url: 'UploadInstallPhoto',

type: 'POST',

cache: false,

data: fd,

datatype: 'json',

processData: false,

contentType: false,

success: function (data) {

},

error: function() {

alert("ERROR in upload");

}

});

}

我在控制器下面的代码:

if(Yii::app()->request->isAjaxRequest)

{

$upload = new UploadedFiles;

$upload->attributes = $_POST['UploadedFiles'];

$file = CUploadedFile::getInstance($upload,'image');

$pi = pathinfo($file);

$upload->name = $pi['filename'];

$upload->ext = $pi['extension'];

$upload->acc_id = $id;

$upload->type_id = 1;

$upload->date_uploaded = date('Y-m-d');

if($upload->save())

{

$file->saveAs(Yii::app()->params['uploadFiles'] . $upload->id . '.' . $pi['extension']);

Yii::app()->user->setFlash('success',Yii::t('flash','flash.accounts.successful_upload'));

}

}

有了上面的代码,我现在可以做ajax文件提交和这个我按预期工作。我现在遇到的问题是该文件被放置到一个文件夹中,并创建数据库中的条目。在数据库中,我引用个人帐户,以便可以在该用户的帐户上看到该文件。

我需要能够做的是通过一组数据与AJAX POST即

data: {file: fd, id: id}

然而,当我改变行使用数组没有数据公布。请有人建议一个可能的修补程序或我可以传递多个值,包括文件值。

+0

您可以将更多的附加到formData对象,但不能真正改变它,因此它是另一个对象的一部分。 –

2014-12-01 16:33:20

+0

@adeneo你是完全正确的。我已经能够根据需要附加带有id的fd变量。感谢您的评论,现在一切正常! –

2014-12-02 08:30:02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值