在一个文件上传下载服务器中,客户端 用VC实现,服务器端用JAV实现,在文件上传模块中
客户端相应的函数代码如下:HRESULT CNetFile::PutFile(const string& szNodeId, const string& szFilePath, const string& szSubject, string& szNewNodeId)
{
HRESULT hRes;
long lAllSize, lUsed;
hRes=GetDiskCapacity(&lAllSize, &lUsed);
if(hRes!=IFS_OK)return hRes;
double remainSize=(lAllSize-lUsed)*1024;
double dFileSize = 0;
CFile file;
CFileException ex; // open the source file for reading if (file.Open(szFilePath.c_str(),CFile::modeRead | CFile::shareDenyRead, &ex))
{
dFileSize = (double)file.GetLength();
file.Close();
if (dFileSize > remainSize)
{
return IFSERR_NOENOUGHSPACE;
}
}else
{
return IFSERR_CANNOTOPEN;
}
// POST堷悢偺愝掕
m_https-> InitializePostArguments();
m_https-> AddPostArgumentMultiPart(szFilePath.c_str());////////是用这传参数吗???????????????????????? // URL偺愝掕
string szUrl;
szUrl.append(m_urlInfo.PutFile);
szUrl.append("?worldId=");
szUrl.append(m_ifsUser.WorldId);
szUrl.append("&userId=");
szUrl.append(m_ifsUser.UserId);
szUrl.append("&password=");
szUrl.append(m_ifsUser.Password);
szUrl.append("&superNodeId=");
szUrl.append(szNodeId);
/*szUrl.append("&subject=");
szUrl.append(szSubject);*/
szUrl.append("&shareState=");
string shareSta="false";
szUrl.append(shareSta);
// 僪僉儏儊儞僩偺庢摼
string szXml;
hRes = m_https-> Request(szUrl.c_str(), szXml);
if (hRes != IFS_OK&&hRes != IFSERR_CANCELTRANS)
{
DebugString("Error - CNetFile::PutFile - Request");
return hRes;
} // 僪僉儏儊儞僩偺夝愅
CXml xml(szXml, "putfile.xml");
if (!xml.IsError())
{
szNewNodeId = xml.GetValueString("createNodeId");
if(hRes == IFSERR_CANCELTRANS)return hRes;
}
else
{
DebugString("Error - CNetFile::PutFile - XMLError");
int nErrorCode = xml.GetErrorCode();
HRESULT hRes = MAKE_IFSRESULT(nErrorCode); // 摨柤偺僼傽僀儖丒僼僅儖僟偑懚嵼偡傞
if (hRes == IFSERR_THENODEOFASAMENAMEEXISTS)
{
szNewNodeId = xml.GetValueString("sameNameNodeId");
} return hRes;
} return S_OK;
}
代码的意思好像是通过m_https-> AddPostArgumentMultiPart(szFilePath.c_str());传递文件路径(我个人的理解不知是否正确)
服务器端用javazoom.upload实现文件上传,请问如何获得客户端穿过来的关于文件路径的参数呢
是否是UploadFile file = (UploadFile) files.get("FilePath");
客户端相应的函数代码如下:HRESULT CNetFile::PutFile(const string& szNodeId, const string& szFilePath, const string& szSubject, string& szNewNodeId)
{
HRESULT hRes;
long lAllSize, lUsed;
hRes=GetDiskCapacity(&lAllSize, &lUsed);
if(hRes!=IFS_OK)return hRes;
double remainSize=(lAllSize-lUsed)*1024;
double dFileSize = 0;
CFile file;
CFileException ex; // open the source file for reading if (file.Open(szFilePath.c_str(),CFile::modeRead | CFile::shareDenyRead, &ex))
{
dFileSize = (double)file.GetLength();
file.Close();
if (dFileSize > remainSize)
{
return IFSERR_NOENOUGHSPACE;
}
}else
{
return IFSERR_CANNOTOPEN;
}
// POST堷悢偺愝掕
m_https-> InitializePostArguments();
m_https-> AddPostArgumentMultiPart(szFilePath.c_str());////////是用这传参数吗???????????????????????? // URL偺愝掕
string szUrl;
szUrl.append(m_urlInfo.PutFile);
szUrl.append("?worldId=");
szUrl.append(m_ifsUser.WorldId);
szUrl.append("&userId=");
szUrl.append(m_ifsUser.UserId);
szUrl.append("&password=");
szUrl.append(m_ifsUser.Password);
szUrl.append("&superNodeId=");
szUrl.append(szNodeId);
/*szUrl.append("&subject=");
szUrl.append(szSubject);*/
szUrl.append("&shareState=");
string shareSta="false";
szUrl.append(shareSta);
// 僪僉儏儊儞僩偺庢摼
string szXml;
hRes = m_https-> Request(szUrl.c_str(), szXml);
if (hRes != IFS_OK&&hRes != IFSERR_CANCELTRANS)
{
DebugString("Error - CNetFile::PutFile - Request");
return hRes;
} // 僪僉儏儊儞僩偺夝愅
CXml xml(szXml, "putfile.xml");
if (!xml.IsError())
{
szNewNodeId = xml.GetValueString("createNodeId");
if(hRes == IFSERR_CANCELTRANS)return hRes;
}
else
{
DebugString("Error - CNetFile::PutFile - XMLError");
int nErrorCode = xml.GetErrorCode();
HRESULT hRes = MAKE_IFSRESULT(nErrorCode); // 摨柤偺僼傽僀儖丒僼僅儖僟偑懚嵼偡傞
if (hRes == IFSERR_THENODEOFASAMENAMEEXISTS)
{
szNewNodeId = xml.GetValueString("sameNameNodeId");
} return hRes;
} return S_OK;
}
代码的意思好像是通过m_https-> AddPostArgumentMultiPart(szFilePath.c_str());传递文件路径(我个人的理解不知是否正确)
服务器端用javazoom.upload实现文件上传,请问如何获得客户端穿过来的关于文件路径的参数呢
是否是UploadFile file = (UploadFile) files.get("FilePath");
解决方案 »
- Javac编译时报:错误:仅当显式请求注释处理时才接受类名称*** 是怎么回事啊?
- 如何用文件做大容量缓冲区,实现同时读写?(类似生产者消费者)
- 如何设置java类文件编译后放到web-inf/classes目录下
- 谁知道五子棋和围棋的判赢的算法!!!!!
- 请教:怎样把两个图片合并成一个?
- Math.random()为什么可以直接使用??
- 初学者的问题,请大侠们帮助!50+20
- 一个小问题,关于contentPane和Jpanel的
- 请问StringBuffer和一般String的区别
- 在线等待:谁能告诉我applet画图
- setColor(0,0,255)这个点怎么在图片上定位?
- [公告]群2920159大学生JAVA讨论群人满了,可以进我另一个新开的群,群号2920182
void CHttpsClient::AddPostArgumentMultiPart(const string& szFileName)
{
string szBoundary = GenerateMultiPartBoundary();
m_szHeader = "Content-Type: multipart/form-data; boundary=" + szBoundary; m_szPostArgs = GenerateMultiPartBody(szFileName, szBoundary);
}
服务器端用javazoom.upload实现文件上传,请问如何获得客户端穿过来的关于文件路径的参数呢
是否是UploadFile file = (UploadFile) files.get("szFileName");