上传应答文件更改

This commit is contained in:
ygs
2025-07-23 15:24:12 +08:00
parent 354b7f3cad
commit 5b76717c10
2 changed files with 63 additions and 48 deletions

View File

@ -23,7 +23,7 @@ function isIE() {
} }
} }
/** /**
* 大文件上传组件 * 大文件上传组件
*/ */
export default class ReactResumableJs extends React.Component { export default class ReactResumableJs extends React.Component {
@ -129,7 +129,7 @@ export default class ReactResumableJs extends React.Component {
</div> </div>
<div style={{ display: this.state.isSupported ? '' : 'none' }}> <div style={{ display: this.state.isSupported ? '' : 'none' }}>
{ {
isIE() ? isIE() ?
<div className="redCenter">推荐使用谷歌、火狐、360浏览器的极速模式下上传文件</div> : null <div className="redCenter">推荐使用谷歌、火狐、360浏览器的极速模式下上传文件</div> : null
} }
<div className="resumable-drop"> <div className="resumable-drop">
@ -184,7 +184,7 @@ export default class ReactResumableJs extends React.Component {
/** /**
* 格式化计时器 * 格式化计时器
* @param {*} value * @param {*} value
*/ */
__format(value) { __format(value) {
if (value < 10) { if (value < 10) {
@ -221,14 +221,17 @@ export default class ReactResumableJs extends React.Component {
/** /**
* 添加文件时的监听 * 添加文件时的监听
* *
* @param {*} file * @param {*} file
*/ */
__fileAddedListener(resumable) { __fileAddedListener(resumable) {
// 更新文件队列表单 // 更新文件队列表单
let strIndex = resumable.fileName.lastIndexOf(".") let strIndex = resumable.fileName.lastIndexOf(".")
let fileSuffix = resumable.fileName.substring(strIndex + 1, resumable.fileName.length) let fileSuffix = resumable.fileName.substring(strIndex + 1, resumable.fileName.length)
if (this.props.fileAccept == ('.' + fileSuffix)) { const allowedTypes = this.props.fileAccept.split(',').map(type => type.trim().toLowerCase());
// 判断文件后缀
// if (this.props.fileAccept == ('.' + fileSuffix)) {
if (allowedTypes.includes('.' + fileSuffix)) {
let _cache = this.state.fileList; let _cache = this.state.fileList;
_cache.length = 0; _cache.length = 0;
_cache.push({ _cache.push({
@ -261,7 +264,7 @@ export default class ReactResumableJs extends React.Component {
getTendererFileStatus(data).then((res) => { // 判断是否已投标 getTendererFileStatus(data).then((res) => { // 判断是否已投标
if (res.code == 200) { if (res.code == 200) {
if(res.data == false){ if(res.data == false){
var fileReader = new FileReader(); var fileReader = new FileReader();
if (fileReader.readAsBinaryString === undefined) { if (fileReader.readAsBinaryString === undefined) {
FileReader.prototype.readAsBinaryString = function (fileData) { //解决ie11 大文件堆栈溢出的问题for arrayBufferToString FileReader.prototype.readAsBinaryString = function (fileData) { //解决ie11 大文件堆栈溢出的问题for arrayBufferToString
@ -279,7 +282,7 @@ export default class ReactResumableJs extends React.Component {
} }
reader.readAsArrayBuffer(fileData); reader.readAsArrayBuffer(fileData);
} }
} }
fileReader.readAsBinaryString(resumable.file); fileReader.readAsBinaryString(resumable.file);
fileReader.onload = e => { fileReader.onload = e => {
resumable.uniqueIdentifier = SparkMD5.hashBinary(e.target.result); resumable.uniqueIdentifier = SparkMD5.hashBinary(e.target.result);
@ -324,7 +327,7 @@ export default class ReactResumableJs extends React.Component {
/** /**
* 文件上传进度播报 * 文件上传进度播报
* @param {*} file * @param {*} file
*/ */
__fileProgressListener(file) { __fileProgressListener(file) {
// 更新文件队列表单 // 更新文件队列表单
@ -341,7 +344,7 @@ export default class ReactResumableJs extends React.Component {
/** /**
* 文件上传完成 * 文件上传完成
* @param {*} file * @param {*} file
*/ */
__fileSuccessListener(file) { __fileSuccessListener(file) {
let _cache = this.state.fileList; let _cache = this.state.fileList;
@ -381,7 +384,7 @@ export default class ReactResumableJs extends React.Component {
/** /**
* 文件上传失败 * 文件上传失败
* @param {*} file * @param {*} file
*/ */
__fileErrorListener(file) { __fileErrorListener(file) {
// 更新文件队列表单 // 更新文件队列表单
@ -401,7 +404,7 @@ export default class ReactResumableJs extends React.Component {
} }
} }
/** /**
* 移除上传列表中的文件 * 移除上传列表中的文件
*/ */
__removeFile(filename) { __removeFile(filename) {
@ -444,7 +447,7 @@ export default class ReactResumableJs extends React.Component {
this.setState({ fileList: _cache, timer: 0 }); this.setState({ fileList: _cache, timer: 0 });
} }
/** /**
* 暂停上传 * 暂停上传
*/ */
__uploadPause(filename) { __uploadPause(filename) {
@ -468,7 +471,7 @@ export default class ReactResumableJs extends React.Component {
} }
} }
/** /**
* 恢复上传 * 恢复上传
*/ */
__uploadResum(filename) { __uploadResum(filename) {

View File

@ -273,7 +273,8 @@ const Index: React.FC<{}> = () => {
if (index == 'single') { if (index == 'single') {
currentDate = val currentDate = val
setEndTime(new Date(val.endDate).getTime()) setEndTime(new Date(val.endDate).getTime())
filetype = '.file' // filetype = '.file'
filetype = '.rar,.zip,.doc,.docx,.xls,.xlsx,.pdf'
object = JSON.stringify(val) object = JSON.stringify(val)
path = '/' + val.createYear + '/' + val.tpId + '/' + val.sectionId + '/' + val.tdocId + '/uploadFile/' + val.tendererId path = '/' + val.createYear + '/' + val.tpId + '/' + val.sectionId + '/' + val.tdocId + '/uploadFile/' + val.tendererId
} else { } else {
@ -312,10 +313,10 @@ const Index: React.FC<{}> = () => {
/** /**
* 大文件上传完成后的组件返回 * 大文件上传完成后的组件返回
* *
* @param file * @param file
* @param resumable * @param resumable
* @param callback * @param callback
*/ */
const onUploadSuccess = (file: any, cache: any, callback: any) => { const onUploadSuccess = (file: any, cache: any, callback: any) => {
cache.push({ cache.push({
@ -346,34 +347,42 @@ const Index: React.FC<{}> = () => {
clearInterval(task); clearInterval(task);
} else { } else {
if (switchBtn) { if (switchBtn) {
getDecrypt(uuid).then((res) => { setTimeout(() => {
if (res.code == 200) { message.destroy()
if (res.data.consumptionState == '2' || res.data.consumptionState == '4') { }, 3000)
if (res.data.stateMessage) { test = 100;
message.error(res.data.stateMessage) callback(cache.length - 1, "文件验证成功", test);
callback(cache.length - 1, res.data.stateMessage, 2); switchBtn = false;
} else { clearInterval(task);
message.error('验证错误,请刷新页面后重新上传!') return;
callback(cache.length - 1, "文件验证失败", 2); // getDecrypt(uuid).then((res) => {
} // if (res.code == 200) {
switchBtn = false; // if (res.data.consumptionState == '2' || res.data.consumptionState == '4') {
clearInterval(task); // if (res.data.stateMessage) {
return; // message.error(res.data.stateMessage)
} else if (res.data.consumptionState == '3') { // callback(cache.length - 1, res.data.stateMessage, 2);
message.success(res.data.stateMessage) // } else {
setTimeout(() => { // message.error('验证错误,请刷新页面后重新上传!')
message.destroy() // callback(cache.length - 1, "文件验证失败", 2);
}, 3000) // }
test = 100; // switchBtn = false;
callback(cache.length - 1, "文件验证成功", test); // clearInterval(task);
switchBtn = false; // return;
clearInterval(task); // } else if (res.data.consumptionState == '3') {
return; // message.success(res.data.stateMessage)
} else { // setTimeout(() => {
callback(cache.length - 1, "文件验证中", test); // message.destroy()
} // }, 3000)
} // test = 100;
}) // callback(cache.length - 1, "文件验证成功", test);
// switchBtn = false;
// clearInterval(task);
// return;
// } else {
// callback(cache.length - 1, "文件验证中", test);
// }
// }
// })
} }
} }
}, 3000); }, 3000);
@ -416,7 +425,10 @@ const Index: React.FC<{}> = () => {
} else { } else {
let strIndex = resumable.fileName.lastIndexOf(".") let strIndex = resumable.fileName.lastIndexOf(".")
let fileSuffix = resumable.fileName.substring(strIndex + 1, resumable.fileName.length) let fileSuffix = resumable.fileName.substring(strIndex + 1, resumable.fileName.length)
if (('.' + fileSuffix) != fileT) { // 判断文件类型
const fileTypes = fileT.split(',').map((type: string) => type.trim().toLowerCase());
// if (('.' + fileSuffix) != fileT) {
if (!fileTypes.includes('.' + fileSuffix)) {
message.error('请上传' + fileT + '类型的文件') message.error('请上传' + fileT + '类型的文件')
} else if (fileSuffix == 'file' && resumable.file.size > 200 * 1024 * 1024) { } else if (fileSuffix == 'file' && resumable.file.size > 200 * 1024 * 1024) {
message.error('文件最大为200MB') message.error('文件最大为200MB')