// make a stream
IStreamPtr pStream;
::CreateStreamOnHGlobal(NULL, TRUE, &pStream);
MSXML2::IXMLHTTPRequestPtr pReq(__uuidof(MSXML2::XMLHTTP26));
pReq->open("POST", "https://inr-wks-08/AspUpload/UploadScript1.asp",
VARIANT_FALSE);
// pReq->open("POST", "https://inr-wks-08/UploadTest/output.asp",
VARIANT_FALSE);
const LPCTSTR BOUNDARY = "---------------------------7d013a15e02c8";
CString tmp;
tmp = CString("multipart/form-data; boundary=") + BOUNDARY;
tmp += '\r';
tmp += '\n';
pReq->setRequestHeader("Content-Type", (LPCTSTR)tmp);
ULONG written;
tmp = "--";
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = CString(BOUNDARY) + '\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
CString filename; m_wndFilename.GetWindowText(filename);
tmp = CString("Content-Disposition: form-data; name=\"file1\";
filename=\"") + filename + "\"" + '\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = CString("Content-Type: application/octet-stream") + '\r' + '\n' +
'\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
CFile file(filename, CFile::modeRead | CFile::typeBinary);
BYTE* pByte = new BYTE[file.GetLength()];
file.Read(pByte, file.GetLength());
pStream->Write(pByte, file.GetLength(), &written);
delete [] pByte;
tmp = CString() + '\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = "--";
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = CString(BOUNDARY);
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = "--";
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
LARGE_INTEGER offset = {0};
ULARGE_INTEGER newPos;
pStream->Seek(offset, STREAM_SEEK_SET, &newPos);
try
{
pReq->send(_variant_t(pStream.GetInterfacePtr()));
CFile tmpfile("c:\\temp.html", CFile::modeCreate | CFile::modeWrite |
CFile::typeBinary);
tmpfile.Write((LPCTSTR)pReq->GetresponseText(),
pReq->GetresponseText().length());
tmpfile.Close();
m_webBrowser.Navigate("c:\\temp.html", &vtMissing, &vtMissing, &vtMissing,
&vtMissing);
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
AfxMessageBox(e.Description());
}
IStreamPtr pStream;
::CreateStreamOnHGlobal(NULL, TRUE, &pStream);
MSXML2::IXMLHTTPRequestPtr pReq(__uuidof(MSXML2::XMLHTTP26));
pReq->open("POST", "https://inr-wks-08/AspUpload/UploadScript1.asp",
VARIANT_FALSE);
// pReq->open("POST", "https://inr-wks-08/UploadTest/output.asp",
VARIANT_FALSE);
const LPCTSTR BOUNDARY = "---------------------------7d013a15e02c8";
CString tmp;
tmp = CString("multipart/form-data; boundary=") + BOUNDARY;
tmp += '\r';
tmp += '\n';
pReq->setRequestHeader("Content-Type", (LPCTSTR)tmp);
ULONG written;
tmp = "--";
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = CString(BOUNDARY) + '\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
CString filename; m_wndFilename.GetWindowText(filename);
tmp = CString("Content-Disposition: form-data; name=\"file1\";
filename=\"") + filename + "\"" + '\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = CString("Content-Type: application/octet-stream") + '\r' + '\n' +
'\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
CFile file(filename, CFile::modeRead | CFile::typeBinary);
BYTE* pByte = new BYTE[file.GetLength()];
file.Read(pByte, file.GetLength());
pStream->Write(pByte, file.GetLength(), &written);
delete [] pByte;
tmp = CString() + '\r' + '\n';
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = "--";
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = CString(BOUNDARY);
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
tmp = "--";
pStream->Write((LPCTSTR)tmp, tmp.GetLength(), &written);
LARGE_INTEGER offset = {0};
ULARGE_INTEGER newPos;
pStream->Seek(offset, STREAM_SEEK_SET, &newPos);
try
{
pReq->send(_variant_t(pStream.GetInterfacePtr()));
CFile tmpfile("c:\\temp.html", CFile::modeCreate | CFile::modeWrite |
CFile::typeBinary);
tmpfile.Write((LPCTSTR)pReq->GetresponseText(),
pReq->GetresponseText().length());
tmpfile.Close();
m_webBrowser.Navigate("c:\\temp.html", &vtMissing, &vtMissing, &vtMissing,
&vtMissing);
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
AfxMessageBox(e.Description());
}
更详细一点?替你写了得了。
自己照着上面的查查资料不会啊。
index.jsp
<form action="doupload.jsp" method="post" enctype="multipart/form-data">
file:<input type="file" name="file"><br>
<input type="submit" value="upload">
</form>
doupload.jsp
<%
//request.setCharacterEncoding("UTF-8");
//String file=request.getParameter("file");//只能获取文件路径
InputStream s=request.getInputStream();//获取文件内容
BufferedReader br=new BufferedReader(new InputStreamReader(s));
BufferedWriter bw=new BufferedWriter(new FileWriter(new File(request.getRealPath(path)+System.currentTimeMillis()+".txt")));
String content=br.readLine();
boolean flag=false;
while(content!=null){
if(content.indexOf("Content-Type: text/plain")!=-1){
br.readLine();
content=br.readLine();
flag=true;
continue;
}
if(!content.equals("\n")&& flag &&!content.startsWith("-----------------------------")){
out.print(content+"<br>");
bw.write(content+"\r\n");
}
content=br.readLine();
}
%>