thinkphp怎么实现上传多个文件到不同的目录
2个回答
2016-09-13 · 知道合伙人互联网行家
关注
展开全部
<tr>
<td><input type='file' name='video[]' /></td>
<td><input type='file' name='video[]' /></td>
<td><input type='file' name='video[]' /></td>
</tr>
<tr>
<td><input type='file' name='pic[]' /></td>
<td><input type='file' name='pic[]' /></td>
<td><input type='file' name='pic[]' /></td>
</tr>
这种不同name的多文件上传,怎么改UploadFile.class.php类,来实现多name多文件上传
index.html
<form method="POST" enctype="multipart/form-data" action="{:U('Index/upload')}">
<tr >
<td>flv文件</td>
<td><input type="file" name="flv" /></td>
</tr>
<tr >
<td>视频压缩文件</td>
<td><input type="file" name="movie" /></td>
</tr>
<tr>
<td>缩略图</td>
<td><input type="file" name="img" /></td>
</tr>
<input type="submit" value="上传" />
</form>
复制代码
UploadFile.class.php 162行
if (!is_dir($savePath)) {
// 检查目录是否编码后的
if (is_dir(base64_decode($savePath))) {
$savePath = base64_decode($savePath);
} else {
// 尝试创建目录
if (!mkdir($savePath)) {
$this->error = '上传目录' . $savePath . '不存在';
return false;
}
}
} else {
if (!is_writeable($savePath)) {
$this->error = '上传目录' . $savePath . '不可写';
return false;
}
}
复制代码
改成
if(!is_array($savePath)){
if (!is_dir($savePath)) {
// 检查目录是否编码后的
if (is_dir(base64_decode($savePath))) {
$savePath = base64_decode($savePath);
} else {
// 尝试创建目录
if (!mkdir($savePath)) {
$this->error = '上传目录' . $savePath . '不存在';
return false;
}
}
} else {
if (!is_writeable($savePath)) {
$this->error = '上传目录' . $savePath . '不可写';
return false;
}
}
}
复制代码
UploadFile.class.php 194行
$file['savepath'] = $savePath;
复制代码
改成
$file['savepath'] = is_array($savePath)?$savePath[$key]:$savePath;
复制代码
Public function upload() {
import('Org.Net.UploadFile');
$upload = new \Org\Net\UploadFile(); // 实例化上传类
$upload->maxSize = 3145728; // 设置附件上传大小
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
// $upload->savePath = './Public/Uploads/'; // 设置附件上传目录
$upload->savePath = array('flv'=>'./Public/Uploads/flv/','movie'=>'./Public/Uploads/movie/','img'=>'./Public/Uploads/img/');
if (!$upload->upload()) {
$this->error($upload->getErrorMsg());
} else {// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
}
复制代码
$upload->savePath 改为数组
./Public/Uploads/flv/
./Public/Uploads/movie/
./Public/Uploads/img/
这3个目录要手动创建 这样在就变成不影响原来程序的
情况下实现上传多个文件到不同的目录了
<td><input type='file' name='video[]' /></td>
<td><input type='file' name='video[]' /></td>
<td><input type='file' name='video[]' /></td>
</tr>
<tr>
<td><input type='file' name='pic[]' /></td>
<td><input type='file' name='pic[]' /></td>
<td><input type='file' name='pic[]' /></td>
</tr>
这种不同name的多文件上传,怎么改UploadFile.class.php类,来实现多name多文件上传
index.html
<form method="POST" enctype="multipart/form-data" action="{:U('Index/upload')}">
<tr >
<td>flv文件</td>
<td><input type="file" name="flv" /></td>
</tr>
<tr >
<td>视频压缩文件</td>
<td><input type="file" name="movie" /></td>
</tr>
<tr>
<td>缩略图</td>
<td><input type="file" name="img" /></td>
</tr>
<input type="submit" value="上传" />
</form>
复制代码
UploadFile.class.php 162行
if (!is_dir($savePath)) {
// 检查目录是否编码后的
if (is_dir(base64_decode($savePath))) {
$savePath = base64_decode($savePath);
} else {
// 尝试创建目录
if (!mkdir($savePath)) {
$this->error = '上传目录' . $savePath . '不存在';
return false;
}
}
} else {
if (!is_writeable($savePath)) {
$this->error = '上传目录' . $savePath . '不可写';
return false;
}
}
复制代码
改成
if(!is_array($savePath)){
if (!is_dir($savePath)) {
// 检查目录是否编码后的
if (is_dir(base64_decode($savePath))) {
$savePath = base64_decode($savePath);
} else {
// 尝试创建目录
if (!mkdir($savePath)) {
$this->error = '上传目录' . $savePath . '不存在';
return false;
}
}
} else {
if (!is_writeable($savePath)) {
$this->error = '上传目录' . $savePath . '不可写';
return false;
}
}
}
复制代码
UploadFile.class.php 194行
$file['savepath'] = $savePath;
复制代码
改成
$file['savepath'] = is_array($savePath)?$savePath[$key]:$savePath;
复制代码
Public function upload() {
import('Org.Net.UploadFile');
$upload = new \Org\Net\UploadFile(); // 实例化上传类
$upload->maxSize = 3145728; // 设置附件上传大小
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
// $upload->savePath = './Public/Uploads/'; // 设置附件上传目录
$upload->savePath = array('flv'=>'./Public/Uploads/flv/','movie'=>'./Public/Uploads/movie/','img'=>'./Public/Uploads/img/');
if (!$upload->upload()) {
$this->error($upload->getErrorMsg());
} else {// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
}
复制代码
$upload->savePath 改为数组
./Public/Uploads/flv/
./Public/Uploads/movie/
./Public/Uploads/img/
这3个目录要手动创建 这样在就变成不影响原来程序的
情况下实现上传多个文件到不同的目录了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询