📄 mimemultipartentry.java
字号:
}
else
{
try{
OutputStream o = MimeUtility.encode( out, encoding );
o.write( this.content );
//o.flush();
//o.close();
}
catch(Exception e){
throw new IOException("Failed to encode by "+encoding);
}
}
out.write(0x0d);
out.write(0x0a);
}
else
{
for( int i = 0; i < entries.length; i++ )
{
entries[i].writeTo( out );
}
}
if( entries.length > 0 )
{
out.write( ("--" + this.getBoundary() + "--").getBytes() );
out.write(0x0d);
out.write(0x0a);
}
//}
//catch( MessagingException e )
//{
// throw new MimeException("Failed write data to out.");
//}
//finally
//{
// writer.close();
//}
}
public static void setFilePart(MimePart part, String path)
throws IOException, MessagingException
{
ByteArrayInputStream in = new ByteArrayInputStream(part.getPayload());
String encoding = part.getEncoding();
byte buf[] = null;
int i = 0;
if( encoding != null )
{
InputStream in1 = MimeUtility.decode(in, encoding);
buf = new byte[in1.available()];
i = in1.read(buf, 0, in1.available());
}
else
{
buf = part.getPayload();
i = buf.length;
}
part.setReleayFileName();
part.setFilepath(path);
String f = part.getPath();
if( f == null ) return;
File file = new File(f);
//System.out.println("part.getFileName()="+file.getPath());
//System.out.println("buf-size="+buf.length+","+i);
//com.kehaoinfo.util.Tools.printb(buf, 0, 16);
try
{
FileOutputStream out = new FileOutputStream(file);
out.write(buf, 0, i);
}
catch(Exception e)
{
}
}
/**
* 单元测试用例——测处理图片的情况
* @param part MimeBodyPart
* @throws IOException
* @throws MessagingException
*/
/*public static void setFilePart(MimePart part, String path)
throws IOException, MessagingException
{
//System.out.println("[");
setFilePart(part, path, null);
//System.out.println("]");
}*/
public static void setTextPart(MimePart part, String path)
throws IOException, MessagingException
{
if( part.isExistTempFile() ) return;//如果存在临时文件就直接返回
String encoding = part.getEncoding();
String charset = part.getContentType().getParameter("charset");
byte buf[] = null;
int i = 0;
if( encoding != null )
{
ByteArrayInputStream in = new ByteArrayInputStream(part.getPayload());
InputStream in1 = MimeUtility.decode(in, encoding);
int k = in1.available();
buf = new byte[k];
//System.out.println("k="+k);
i = in1.read(buf, 0, k);
//System.out.println("i="+i);
if( charset != null )
{
String s = new String(buf, 0, i, charset);
buf = s.getBytes();
i = buf.length;
}
}
else
{
//System.out.println("charset["+charset+"]\r\n"+new String(buf, charset));
//String s = new String(buf, charset);
//buf = s.getBytes();
buf = part.getPayload();
i = buf.length;
}
part.setReleayFileName();
part.setFilepath(path);
String f = part.getPath();
if( f == null ) return;
File file = new File(f);
//System.out.println("part.getFileName()="+part.getFileName());
try
{
FileOutputStream out = new FileOutputStream( file );
out.write( buf, 0, i );
part.setFilepath(path);
}
catch(Exception e)
{
}
}
/**
* 单元测试用例——测处理文本的情况
* @param part MimeBodyPart
* @throws IOException
* @throws MessagingException
*/
/*public static void setTextPart(MimePart part, String path)
throws IOException, MessagingException
{
setTextPart(part, path, null);
}*/
static void _testNoBoundaryMime()
{
File file = new File("D:\\work\\project\\isms_unicom\\proxy\\multipart_1.txt");
try
{
FileInputStream in = new FileInputStream(file);
MimeMultipartEntry mimebodypart = new MimeMultipartEntry(in);
//System.out.println(mimebodypart);
//System.out.println(mimebodypart.getContentType());
if( mimebodypart.getContentType().getPrimaryType().equalsIgnoreCase("text"))
{
setTextPart(mimebodypart, "D:\\work\\project\\isms_unicom\\proxy\\");
}
else if( mimebodypart.getContentType().getPrimaryType().equalsIgnoreCase("image"))
{
setFilePart(mimebodypart, "D:\\work\\project\\isms_unicom\\proxy\\");
}
}
catch( FileNotFoundException e)
{
e.printStackTrace();
}
catch( IOException e)
{
e.printStackTrace();
}
catch( Exception e)
{
e.printStackTrace();
}
}
static void _testBoundaryMime()
{
File file = new File("D:\\work\\project\\isms_unicom\\favorite\\1175610b8a84.mp");
try
{
FileInputStream in = new FileInputStream(file);
MimeMultipartEntry part = new MimeMultipartEntry(in);
//System.out.println(part.getHeader("Subject"));
//System.out.println(part.getMultipartEntryByIndex(0));
//System.out.println(mimebodypart.getContentType());
MimeMultipartEntry entries[] = part.getMultipartEntries();
//System.out.println("entries="+entries.length);
for(int i = 0; i < entries.length; i++ )
{
String type = entries[i].getContentType().getPrimaryType();
//System.out.println("type="+type);
if( type.equalsIgnoreCase("text"))
{
setTextPart(entries[i], "D:\\work\\project\\isms_unicom\\temp\\");
//System.out.println(MimeMultipartView.getTextPartContent(entries[i]));
}
else if( type.equalsIgnoreCase("image"))
{
//System.out.println("sdfsadfsdfdsf="+type);
setFilePart(entries[i], "D:\\work\\project\\isms_unicom\\temp\\");
}
else
{
MimeMultipartEntry e[] = entries[i].getMultipartEntries();
for( int k = 0; k < e.length; k++ )
{
if( e[i].getContentType().getPrimaryType().equalsIgnoreCase("text"))
{
setTextPart(e[k], "D:\\work\\project\\isms_unicom\\temp\\");
}
else if( e[i].getContentType().getPrimaryType().equalsIgnoreCase("image"))
{
setFilePart(e[k], "D:\\work\\project\\isms_unicom\\temp\\");
}
}
}
}
}
catch( FileNotFoundException e)
{
e.printStackTrace();
}
catch( IOException e)
{
e.printStackTrace();
}
catch( Exception e)
{
e.printStackTrace();
}
}
public static void _testEncod()
{
try
{
File file = new File("D:\\work\\project\\isms_unicom\\google.html");
FileInputStream in = new FileInputStream(file);
byte buf[] = new byte[in.available()];
in.read(buf);
MimeMultipartEntry part = new MimeMultipartEntry();
part.setContentType("multipart/related");
MimeMultipartEntry _part = new MimeMultipartEntry();
_part.setContentType("multipart/alternative");
MimeMultipartEntry part1= new MimeMultipartEntry();
part1.setContentType("text/plain");
part1.getContentType().setParameter("charset", "gb2312");
part1.getContentType().setParameter("name", "abcc");
part1.getContentType().setParameter("path", "D:\\work\\project\\isms_unicom\\proxy\\");
part1.setContent("ABCD123".getBytes(), "7bit");
_part.addMultipartEntry(part1);
MimeMultipartEntry part2 = new MimeMultipartEntry();
part2.setContentType("text/html");
part2.getContentType().setParameter("charset", "gb2312");
part2.getContentType().setParameter("name", "google");
part2.getContentType().setParameter("filename", "google.html");
part2.getContentType().setParameter("path", "D:\\work\\project\\isms_unicom\\proxy\\");
part2.setContent(buf, "quoted-printable");
_part.addMultipartEntry(part2);
part.addMultipartEntry(_part);
FileInputStream in1 = new FileInputStream(
"D:\\work\\project\\isms_unicom\\proxy\\15065421.jpg");
buf = new byte[in1.available()];
in1.read(buf);
MimeMultipartEntry part3 = new MimeMultipartEntry();
part3.setContentType("image/jpg");
part3.getContentType().setParameter("name", "裸体");
part3.getContentType().setParameter("path", "D:\\work\\project\\isms_unicom\\proxy\\");
part3.setContent(buf, "base64");
part.addMultipartEntry(part3);
FileInputStream in2 = new FileInputStream(
"D:\\work\\project\\isms_unicom\\proxy\\10_0P6Xiw4UKvWW.jpg");
buf = new byte[in2.available()];
in2.read(buf);
MimeMultipartEntry part4 = new MimeMultipartEntry();
part4.setContentType("image/jpg");
part4.setContent(buf, "base64");
part.addMultipartEntry(part4);
FileOutputStream out = new FileOutputStream(
"D:\\work\\project\\isms_unicom\\proxy\\1.mp");
part.writeTo(out);
}
catch( Exception e )
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
//_testEncod();
_testBoundaryMime();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -