上传单个或多个文件

一、导入包

<link rel="styleSheet" type="text/css"
href="<c:url value='/fileupload/fileupload.css'/>" />
<script type="text/javascript"
src="<c:url value='/fileupload/fileupload.js' />"></script>
<script type="text/javascript">

二、ui实现

<tr>
<th class="td_l">
年取水计划相关文件:
</th>
<td class="td_r" colspan="3">
<div class='addFileImage' id='addFileImages'></div>
<div id='fileUploadDivContainers'
class='fileUploadDivContainers'>
<div id='fileUploadDivs' style='display: none; padding: 2px;'>
选择文件:
<input type='file' class='input_field' name='waterPlanFiles'
style="width: 180px;" />
<a class='deleteFileHref' href="#">删除</a>
</div>
</div>
</td>
</tr>
<tr>
<th class="td_l">
企业快照:
</th>
<td class="td_r" colspan="3">
<div class='addFileImage' id='addFileImage'></div>
<div id='fileUploadDivContainer' class='fileUploadDivContainer'>
<div id='fileUploadDiv' style='display: none; padding: 2px;'>
选择文件:
<input type='file' class='input_field' name='companyPicFiles'
style="width: 180px;" />
<a class='deleteFileHref' href="#">删除</a>
</div>
</div>
</td>
</tr>


三、控件实例化

$(document).ready(function() {
function initFileInputs() {
$(document).fileInput( {
clickImageId : "addFileImage",
appendDivId : "fileUploadDivContainer",
cloneDivId : "fileUploadDiv",
showNumber : 1
});
$(document).fileInput( {
clickImageId : "addFileImages",
appendDivId : "fileUploadDivContainers",
cloneDivId : "fileUploadDivs",
showNumber : 1
});
}
});

四、后台接收

(1)、实体类要实现接口FileInterface

(2)、控制层实现

@RequestMapping(params = "action=doAddDfag")
public synchronized void doAdd(HttpServletResponse response,
HttpServletRequest request) {
Dfag dfag = null;
FileUploadMultipleDateUtil util;
try {
/* 删除此代码,从文件中取 */
// String filePath = this.uploadFile(request);
// /*删除此代码,从文件中取*/
util = new FileUploadMultipleDateUtil(
FileUploadMultipleDateUtil.LIST_CONVERT_TYPE);


// 系统分割符号
String strTemp = System.getProperty("file.separator");
StringBuffer sb = new StringBuffer();
sb.append("upload").append(strTemp).append("files").append(strTemp);
dfag = util.uploadFile(request, Dfag.class, sb.toString());
Dfag df = dfagService.getDfagByDfagcd(dfag.getDfagcd());
if (df != null) {
super.ajaxForward(response, EXISTS);
} else {
//获取上传的文件并进行处理
List<FileDomain> fileList = dfag.getFileList();
if (fileList != null) {
for (FileDomain fileObj : fileList) {
Qushuifiles qushuiFiles = new Qushuifiles();
qushuiFiles.setDfagCd(dfag.getDfagcd());
qushuiFiles.setFileName(fileObj.getFileName());
qushuiFiles.setUseType(fileObj.getFieldName());
qushuiFiles.setFilePath(fileObj.getRelativePath()
+ FileUploadUtil.OS_FILE_SYMBOL
+ fileObj.getGenFileName());
qushuiFiles.setFilePath(fileObj.getGenFileName());
qushuiFileService.insert(qushuiFiles);
}
}

dfagService.insert(dfag);


// 插入系统日志
logger.info("增加取水用户:" + dfag.getBasinName());
AreaTreeCacheObservable.getInstance().setCacheChanged();
super.ajaxForward(response, OK);
}
} catch (Exception e) {
e.printStackTrace();
logger.error("增加取水用户异常:", e);
super.ajaxForward(response, ERROR);


}


}

(3)、多个文件上传要建立子表通过id关联查询

(4)、core-servlet.xml中的相关bean要注释掉,不然上传会报错


(5)前端form表单要加上enctype="multipart/form-data"属性,不然文件上传不了



Ruoyi(如Yii框架)是一个用于快速开发Web应用的PHP框架,它提供了一种方便的方式来处理文件上传。无论是单个文件上传还是批量文件上传,都有相应的功能。 **单个文件上传:** 在Yii中,你可以通过`yii\web\UploadedFile`类来处理单个文件上传。通常,用户会通过HTML表单提交文件,然后在控制器中接收并验证这个文件。下面是一个基本的例子: ```php use yii\web\Controller; use yii\web\UploadedFile; class UploadController extends Controller { public function actionUpload() { $model = new MyModel(); if ($model->load(Yii::$app->request->post()) && $model->upload()) { // 文件上传成功,保存文件信息到数据库其他地方 return '上传成功'; } else { // 上传失败,显示错误信息 return '出错啦:' . var_export($model->getErrors(), true); } } } ``` 在这个例子中,`$model->upload()`会处理文件上传操作。 **多个文件上传:** 处理多个文件上传稍微复杂一些,需要循环遍历请求中的`$_FILES`数组。可以创建一个模型数组,每个元素对应一个上传文件。例如: ```php public function actionMultiUpload() { $models = []; foreach ($_FILES as $key => $file) { $model = new MyModel(['name' => $key]); if ($model->load(['MyModel' => $file], '') && $model->validate()) { $model->saveAs('uploads/' . $model->name); $models[] = $model; } else { // 处理错误 } } // 现在=models数组包含了所有已成功上传文件信息 // 可以进一步处理这些数据 return json_encode($models); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值