解决导出对话框上面的进度条显示不正确的问题

This commit is contained in:
luoliangyi 2023-11-20 10:30:28 +08:00
parent 80610b459f
commit 001eaf65cf
3 changed files with 324 additions and 308 deletions

View File

@ -31,8 +31,22 @@ Dialog_ExportImageFile::Dialog_ExportImageFile(const QString &destPath, const QS
ui->setupUi(this); ui->setupUi(this);
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
int totalCount = 0;
for (int i = 0; i < m_srcFiles.size(); ++i)
{
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (NULL != imgFmtReader)
{
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
totalCount += count;
HGImgFmt_CloseImageReader(imgFmtReader);
}
}
ui->progressBar->setMinimum(0); ui->progressBar->setMinimum(0);
ui->progressBar->setMaximum(srcFiles.size()); ui->progressBar->setMaximum(totalCount);
ui->progressBar->setValue(0); ui->progressBar->setValue(0);
connect(this, SIGNAL(updateProgress(int)), this, SLOT(on_updateProgress(int)), Qt::QueuedConnection); connect(this, SIGNAL(updateProgress(int)), this, SLOT(on_updateProgress(int)), Qt::QueuedConnection);
@ -57,290 +71,29 @@ void HGAPI Dialog_ExportImageFile::ThreadFunc(HGThread thread, HGPointer param)
{ {
(void)thread; (void)thread;
Dialog_ExportImageFile *p = (Dialog_ExportImageFile *)param; Dialog_ExportImageFile *p = (Dialog_ExportImageFile *)param;
HGResult ret = HGBASE_ERR_FAIL;
HGResult ret = HGBASE_ERR_FAIL;
if (p->m_isSaveAsMulti) if (p->m_isSaveAsMulti)
{ {
QString fileName = p->m_destPath + p->m_destName + p->m_destExt;
if (p->m_isOcr) if (p->m_isOcr)
{ {
#if 0 ret = p->processMultiFileOcr();
HGChar tmpFileName[256];
HGBase_GetTmpFileName("tif", tmpFileName, 256);
HGImgFmtWriter writer = NULL;
HGImgFmt_OpenImageWriter(tmpFileName, 0, &writer);
for (int i = 0; i < p->m_srcFiles.size(); ++i)
{
if (p->m_stopThread)
{
break;
}
emit p->updateProgress(i);
HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK == ret)
{
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (p->m_stopThread)
{
break;
}
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK == ret)
{
ret = HGImgFmt_SaveImageToWriter(writer, img, NULL);
HGBase_DestroyImage(img);
}
if (ret != HGBASE_ERR_OK)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
}
if (ret != HGBASE_ERR_OK)
break;
}
HGImgFmt_CloseImageWriter(writer);
bool result = createOcrPdf(tmpFileName, getStdString(fileName).c_str(), m_ocrLanguageType);
QFile::remove(tmpFileName);
if (!result)
{
ret = HGIMGPROC_ERR_OCR;
}
#else
HGOCRMgr ocrMgr = nullptr;
ret = HGImgProc_CreateOCRMgr(0, &ocrMgr);
if (HGBASE_ERR_OK == ret)
{
for (int i = 0; i < p->m_srcFiles.size(); ++i)
{
if (p->m_stopThread)
{
break;
}
emit p->updateProgress(i);
HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK == ret)
{
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (p->m_stopThread)
{
break;
}
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK == ret)
{
ret = HGImgProc_AddToImageOCRList(ocrMgr, img);
HGBase_DestroyImage(img);
}
if (ret != HGBASE_ERR_OK)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
}
if (ret != HGBASE_ERR_OK)
break;
}
if (ret == HGBASE_ERR_OK)
{
ret = HGImgProc_ImageListOCRToFile(ocrMgr, 0, getStdString(fileName).c_str(), NULL, NULL);
}
HGImgProc_DestroyOCRMgr(ocrMgr);
}
#endif
} }
else else
{ {
if (p->m_destExt == ".gif") if (p->m_destExt == ".gif")
{ {
ret = p->processGif(fileName); ret = p->processMultiFileGif();
} }
else else
{ {
HGImgFmtWriter imgFmtWriter = nullptr; ret = p->processMultiFile();
ret = HGImgFmt_OpenImageWriter(getStdString(fileName).c_str(), 0, &imgFmtWriter);
if (HGBASE_ERR_OK == ret)
{
for (int i = 0; i < p->m_srcFiles.size(); ++i)
{
if (p->m_stopThread)
{
break;
}
emit p->updateProgress(i);
HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK == ret)
{
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (p->m_stopThread)
{
break;
}
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK == ret)
{
HGImgFmtSaveInfo saveInfo;
saveInfo.jpegQuality = (HGUInt)p->m_jpegQuality;
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
saveInfo.tiffJpegQuality = (HGUInt)p->m_tiffQuality;
HGImageInfo imgInfo;
HGBase_GetImageInfo(img, &imgInfo);
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
{
if (1 == p->m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == p->m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
}
else
{
if (1 == p->m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == p->m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
}
ret = HGImgFmt_SaveImageToWriter(imgFmtWriter, img, &saveInfo);
HGBase_DestroyImage(img);
}
if (ret != HGBASE_ERR_OK)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
}
if (ret != HGBASE_ERR_OK)
break;
}
HGImgFmt_CloseImageWriter(imgFmtWriter);
}
} }
} }
} }
else else
{ {
int index = 1; ret = p->processSingleFile();
for (int i = 0; i < p->m_srcFiles.size(); ++i)
{
if (p->m_stopThread)
{
break;
}
emit p->updateProgress(i);
HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK == ret)
{
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (p->m_stopThread)
{
break;
}
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK == ret)
{
char fileName[512];
if(p->m_srcFiles.size() > 1 || count > 1)
{
sprintf(fileName, "%s%03d", getStdString(p->m_destName).c_str(), index);
}else
sprintf(fileName, "%s", getStdString(p->m_destName).c_str());
++index;
QString saveFileName = p->m_destPath + QString(StdStringToUtf8(fileName).c_str()) + p->m_destExt;
HGImgFmtSaveInfo saveInfo;
saveInfo.jpegQuality = (HGUInt)p->m_jpegQuality;
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
saveInfo.tiffJpegQuality = (HGUInt)p->m_tiffQuality;
HGImageInfo imgInfo;
HGBase_GetImageInfo(img, &imgInfo);
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
{
if (1 == p->m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == p->m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
}
else
{
if (1 == p->m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == p->m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
}
ret = MainWindow::saveImage(img, &saveInfo, p->m_isOcr, getStdString(saveFileName).c_str());
HGBase_DestroyImage(img);
}
if (ret != HGBASE_ERR_OK)
break;
}
HGImgFmt_CloseImageReader(imgFmtReader);
}
if (ret != HGBASE_ERR_OK)
break;
}
} }
emit p->finish((int)ret); emit p->finish((int)ret);
@ -366,7 +119,77 @@ void Dialog_ExportImageFile::on_pushButton_clicked()
m_thread = nullptr; m_thread = nullptr;
} }
HGResult Dialog_ExportImageFile::processGif(const QString &fileName) HGResult Dialog_ExportImageFile::processMultiFileOcr()
{
int handleCount = 0;
QString fileName = m_destPath + m_destName + m_destExt;
HGOCRMgr ocrMgr = nullptr;
HGResult ret = HGImgProc_CreateOCRMgr(HGIMGPROC_OCRALGO_HANVON, &ocrMgr);
if (HGBASE_ERR_OK != ret)
{
return ret;
}
for (int i = 0; i < m_srcFiles.size(); ++i)
{
if (m_stopThread)
{
break;
}
HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK != ret)
{
break;
}
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (m_stopThread)
{
break;
}
emit updateProgress(handleCount);
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK != ret)
{
break;
}
ret = HGImgProc_AddToImageOCRList(ocrMgr, img);
HGBase_DestroyImage(img);
++handleCount;
if (HGBASE_ERR_OK != ret)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
if (HGBASE_ERR_OK != ret)
{
break;
}
}
if (HGBASE_ERR_OK == ret)
{
ret = HGImgProc_ImageListOCRToFile(ocrMgr, 0, getStdString(fileName).c_str(), NULL, NULL);
}
HGImgProc_DestroyOCRMgr(ocrMgr);
return ret;
}
HGResult Dialog_ExportImageFile::processMultiFileGif()
{ {
HGUInt maxWidth = 0; HGUInt maxWidth = 0;
HGUInt maxHeight = 0; HGUInt maxHeight = 0;
@ -392,12 +215,16 @@ HGResult Dialog_ExportImageFile::processGif(const QString &fileName)
} }
} }
HGGifSaveInfo gifSaveInfo = {maxWidth, maxHeight}; int handleCount = 0;
QString fileName = m_destPath + m_destName + m_destExt;
HGGifSaveInfo gifSaveInfo = {maxWidth, maxHeight};
HGGifWriter gifWriter = NULL; HGGifWriter gifWriter = NULL;
HGResult ret = HGImgFmt_OpenGifWriter(getStdString(fileName).c_str(), &gifSaveInfo, &gifWriter); HGResult ret = HGImgFmt_OpenGifWriter(getStdString(fileName).c_str(), &gifSaveInfo, &gifWriter);
if (ret != HGBASE_ERR_OK) if (HGBASE_ERR_OK != ret)
{
return ret; return ret;
}
for (int i = 0; i < m_srcFiles.size(); ++i) for (int i = 0; i < m_srcFiles.size(); ++i)
{ {
@ -406,47 +233,230 @@ HGResult Dialog_ExportImageFile::processGif(const QString &fileName)
break; break;
} }
emit updateProgress(i);
HGImgFmtReader imgFmtReader = nullptr; HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader); ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK == ret) if (HGBASE_ERR_OK != ret)
{ {
HGUInt count = 0; break;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (m_stopThread)
{
break;
}
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK == ret)
{
ret = HGImgFmt_SaveImageToGifWriter(gifWriter, 200, HG_MAKECOLOR(255, 255, 255, 255), img);
HGBase_DestroyImage(img);
}
if (ret != HGBASE_ERR_OK)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
} }
if (ret != HGBASE_ERR_OK) HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (m_stopThread)
{
break;
}
emit updateProgress(handleCount);
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK != ret)
{
break;
}
ret = HGImgFmt_SaveImageToGifWriter(gifWriter, 200, HG_MAKECOLOR(255, 255, 255, 255), img);
HGBase_DestroyImage(img);
++handleCount;
if (HGBASE_ERR_OK != ret)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
if (HGBASE_ERR_OK != ret)
{
break; break;
}
} }
HGImgFmt_CloseGifWriter(gifWriter); HGImgFmt_CloseGifWriter(gifWriter);
return ret; return ret;
} }
HGResult Dialog_ExportImageFile::processMultiFile()
{
int handleCount = 0;
QString fileName = m_destPath + m_destName + m_destExt;
HGImgFmtWriter imgFmtWriter = nullptr;
HGResult ret = HGImgFmt_OpenImageWriter(getStdString(fileName).c_str(), 0, &imgFmtWriter);
if (HGBASE_ERR_OK != ret)
{
return ret;
}
for (int i = 0; i < m_srcFiles.size(); ++i)
{
if (m_stopThread)
{
break;
}
HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK != ret)
{
break;
}
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (m_stopThread)
{
break;
}
emit updateProgress(handleCount);
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK != ret)
{
break;
}
HGImgFmtSaveInfo saveInfo;
saveInfo.jpegQuality = (HGUInt)m_jpegQuality;
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
saveInfo.tiffJpegQuality = (HGUInt)m_tiffQuality;
HGImageInfo imgInfo;
HGBase_GetImageInfo(img, &imgInfo);
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
{
if (1 == m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
}
else
{
if (1 == m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
}
ret = HGImgFmt_SaveImageToWriter(imgFmtWriter, img, &saveInfo);
HGBase_DestroyImage(img);
++handleCount;
if (HGBASE_ERR_OK != ret)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
if (HGBASE_ERR_OK != ret)
{
break;
}
}
HGImgFmt_CloseImageWriter(imgFmtWriter);
return ret;
}
HGResult Dialog_ExportImageFile::processSingleFile()
{
int handleCount = 0;
HGResult ret = HGBASE_ERR_OK;
for (int i = 0; i < m_srcFiles.size(); ++i)
{
if (m_stopThread)
{
break;
}
HGImgFmtReader imgFmtReader = nullptr;
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
if (HGBASE_ERR_OK != ret)
{
break;
}
HGUInt count = 0;
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
for (HGUInt j = 0; j < count; ++j)
{
if (m_stopThread)
{
break;
}
emit updateProgress(handleCount);
HGImage img = nullptr;
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
if (HGBASE_ERR_OK != ret)
{
break;
}
QString fileName;
if(m_srcFiles.size() > 1 || count > 1)
{
char str[256];
sprintf(str, "%s%03d", getStdString(m_destName).c_str(), handleCount + 1);
fileName = m_destPath + QString(StdStringToUtf8(str).c_str()) + m_destExt;
}
else
{
fileName = m_destPath + m_destName + m_destExt;
}
HGImgFmtSaveInfo saveInfo;
saveInfo.jpegQuality = (HGUInt)m_jpegQuality;
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
saveInfo.tiffJpegQuality = (HGUInt)m_tiffQuality;
HGImageInfo imgInfo;
HGBase_GetImageInfo(img, &imgInfo);
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
{
if (1 == m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == m_tiffCompressionBW)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
}
else
{
if (1 == m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
else if (2 == m_tiffCompression)
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
}
ret = MainWindow::saveImage(img, &saveInfo, m_isOcr, getStdString(fileName).c_str());
HGBase_DestroyImage(img);
++handleCount;
if (HGBASE_ERR_OK != ret)
{
break;
}
}
HGImgFmt_CloseImageReader(imgFmtReader);
if (HGBASE_ERR_OK != ret)
{
break;
}
}
return ret;
}
void Dialog_ExportImageFile::closeEvent(QCloseEvent *e) void Dialog_ExportImageFile::closeEvent(QCloseEvent *e)
{ {
(void)e; (void)e;

View File

@ -31,7 +31,10 @@ private slots:
void on_pushButton_clicked(); void on_pushButton_clicked();
private: private:
HGResult processGif(const QString &fileName); HGResult processMultiFileOcr();
HGResult processMultiFileGif();
HGResult processMultiFile();
HGResult processSingleFile();
protected: protected:
virtual void closeEvent(QCloseEvent *e); virtual void closeEvent(QCloseEvent *e);
@ -50,7 +53,7 @@ private:
bool m_isOcr; bool m_isOcr;
QStringList m_srcFiles; QStringList m_srcFiles;
bool m_stopThread; volatile bool m_stopThread;
HGThread m_thread; HGThread m_thread;
}; };

View File

@ -178,20 +178,23 @@
} }
else if ("scan_image" == message['func']) else if ("scan_image" == message['func'])
{ {
var info = document.getElementById('info');
info.value = message['image_path'];
//var myCanvas = document.getElementById("myCanvas"); //var myCanvas = document.getElementById("myCanvas");
//myCanvas.src = message['image_base64']; //myCanvas.src = message['image_base64'];
var req1 = {'func':'insert_local_image', 'iden':'111', 'image_path':''}; //var req1 = {'func':'insert_local_image', 'iden':'111', 'image_path':''};
req1.image_path = message['image_path']; //req1.image_path = message['image_path'];
socket.send(JSON.stringify(req1)); //socket.send(JSON.stringify(req1));
//var req2 = {'func':'upload_local_file', 'iden':'111', 'file_path':'', 'upload_mode':'http', 'http_host':'192.168.100.70', 'http_port':8001, 'http_path':'/upload.php'}; //var req2 = {'func':'upload_local_file', 'iden':'111', 'file_path':'', 'upload_mode':'http', 'http_host':'192.168.100.70', 'http_port':8001, 'http_path':'/upload.php'};
//req2.file_path = message['image_path']; //req2.file_path = message['image_path'];
//socket.send(JSON.stringify(req2)); //socket.send(JSON.stringify(req2));
var req3 = {'func':'delete_local_file', 'file_path':''}; //var req3 = {'func':'delete_local_file', 'file_path':''};
req3.file_path = message['image_path']; //req3.file_path = message['image_path'];
socket.send(JSON.stringify(req3)); //socket.send(JSON.stringify(req3));
} }
else if ("stop_scan" == message['func']) else if ("stop_scan" == message['func'])
{ {
@ -397,7 +400,7 @@
'remote_file_path':'/savedir/123.jpg', 'remote_file_path':'/savedir/123.jpg',
'upload_mode':'http', 'upload_mode':'http',
'http_host':'192.168.1.70', 'http_host':'192.168.1.70',
'http_port':8001, 'http_port':8080,
'http_path':'/upload.php' 'http_path':'/upload.php'
})); }));
} }