java工具类------pad文件上传
1.在这里简单说一下这块的知识,因为在开发中遇到了,所以我整理了一下这块的知识,这边封装的是一个sevlet,所以一定要记着在web.xml中配置,这块不做过多赘述,下面直接说代码,代码如下:
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
public class PdfUpload extends HttpServlet
{
private static final long serialVersionUID = 1L;
private long size;
private BufferedImage bsrc;
private String type;
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
doPost(request,response); //将get请求和post请求统一发送给doPost处理 }
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setCharacterEncoding("UTF-8");
String returnMessage = "{status:'SUCCESS', data:''}";
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Headers", "apptypeid,platformid,city,district,Content-Type, Authorization, Accept,X-Requested-With");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
Calendar date = Calendar.getInstance();
String saveDirectory = request.getSession().getServletContext().getRealPath("/upload"); // 在磁盘上保存的路径
//String saveDirectory = "C:/Users/Administrator/Desktop";
String saveUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/upload";
String saveImgUrl = "";
System.out.println("服务器的路径============="+saveDirectory);
System.out.println("保存的路径============"+saveUrl);
// 新建对应日期文件夹
int iYear = date.get(Calendar.YEAR);
saveDirectory += File.separator + iYear;
saveUrl += "/" + iYear;
int iMonth = date.get(Calendar.MONTH) + 1;
saveDirectory += File.separator + iMonth;
saveUrl += "/" + iMonth;
int iDay = date.get(Calendar.DATE);
saveDirectory += File.separator + iDay;
saveUrl += "/" + iDay;
File f = new File(saveDirectory);
if (!f.isDirectory())
{
f.mkdirs();
}
if (ServletFileUpload.isMultipartContent(request))
{
DiskFileItemFactory dff = new DiskFileItemFactory();
dff.setRepository(f);
dff.setSizeThreshold(1024000);
ServletFileUpload sfu = new ServletFileUpload(dff);
FileItemIterator fii = null;
try
{
fii = sfu.getItemIterator(request);
}
catch (FileUploadException e1)
{
e1.printStackTrace();
}
String saveFilePath = ""; // 图片地址
try
{
int iIndex = 0;
while (fii.hasNext())
{
FileItemStream fis = fii.next();
try
{
if (!fis.isFormField() && fis.getName().length() > 0)
{
iIndex++;
String saveFileName = iYear + "" + iMonth + "" + iDay + "" + date.get(Calendar.HOUR) + date.get(Calendar.MINUTE) + "" + date.get(Calendar.SECOND) + "-" + iIndex + ".pdf";
saveFilePath = saveDirectory + File.separator + saveFileName;
saveUrl += "/" + saveFileName;
BufferedInputStream in = new BufferedInputStream(fis.openStream());
FileOutputStream a = new FileOutputStream(new File(saveFilePath));
BufferedOutputStream output = new BufferedOutputStream(a);
Streams.copy(in, output, true);// 开始把文件写到你指定的上传文件夹
String imgName = iYear + "" + iMonth + "" + iDay + "" + date.get(Calendar.HOUR) + date.get(Calendar.MINUTE) + "" + date.get(Calendar.SECOND) + "-" + iIndex+"jpg";
saveImgUrl += saveDirectory + File.separator + imgName;
System.out.println("完整路径================================="+saveUrl);
System.out.println("图片路径================================="+saveImgUrl);
PDF_to_JPGFuncation funcation = new PDF_to_JPGFuncation();
PDF_to_JPGFuncation.tranfer(saveFilePath,
saveImgUrl, 1);
type = fis.getName().substring(fis.getName().lastIndexOf(".")).toLowerCase();
}
}
catch (Exception e)
{
e.printStackTrace();
returnMessage = "{\"status\":\"ERROR\",\"data\":\"\"}";
}
}
if (returnMessage.indexOf("status:'SUCCESS'") > -1)
{
String savePath=saveFilePath.replaceAll("\\\\", "/");
returnMessage = "{\"status\":\"OK\",\"data\":\"" + savePath + "\"}";
}
}
catch (FileUploadException e)
{
e.printStackTrace();
returnMessage = "{\"status\":\"ERROR\",\"data\":\"\"}";
}
//String urlEncoder = URLEncoder.encode(returnMessage, "utf-8");
//String url = urlEncoder.replace("+", "%20");
response.getWriter().println(returnMessage);
}
}
private String readFileItem(FileItemStream fis) throws IOException
{
BufferedInputStream in = new BufferedInputStream(fis.openStream());
byte[] bytes = readStream(in);
if (bytes != null && bytes.length > 0)
{
try
{
return new String(bytes, 0, bytes.length);
}
catch (Exception e)
{
return "";
}
}
return "";
}
private byte[] readStream(InputStream networkStream) throws IOException
{
byte[] bytes = new byte[100];
byte[] bytecount = null;
int n = 0;
int ilength = 0;
try
{
while ((n = networkStream.read(bytes)) >= 0)
{
if (bytecount != null)
{
ilength = bytecount.length;
}
byte[] tempbyte = new byte[ilength + n];
if (bytecount != null)
{
System.arraycopy(bytecount, 0, tempbyte, 0, ilength);
}
System.arraycopy(bytes, 0, tempbyte, ilength, n);
bytecount = tempbyte;
if (n == -1)
break;
}
}
finally
{
networkStream.close();
}
return bytecount;
}
public void delFile(String filename)
{
File file = new File(filename);
if (file.isFile() && file.exists())
{
file.delete();
System.out.println("删除成功");
}
else
{
System.out.println("要删除的文件不存在");
}
}
}
另外在这个方法中涉及到了一个类,代码如下:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;
public class PDF_to_JPGFuncation {
public static final String FILETYPE_JPG = "jpg";
public static final String SUFF_IMAGE = "." + FILETYPE_JPG;
public static void tranfer(String filepath, String imagepath, float zoom)
throws PDFException, PDFSecurityException, IOException {
Document document = null;
float rotation = 0f;
document = new Document();
document.setFile(filepath);
BufferedImage img = (BufferedImage) document.getPageImage(0, GraphicsRenderingHints.SCREEN,
Page.BOUNDARY_CROPBOX, rotation, zoom);
Iterator iter = ImageIO.getImageWritersBySuffix(FILETYPE_JPG);
ImageWriter writer = (ImageWriter) iter.next();
File outFile = new File(imagepath + document.getNumberOfPages() + "." + FILETYPE_JPG);
FileOutputStream out = new FileOutputStream(outFile);
ImageOutputStream outImage = ImageIO.createImageOutputStream(out);
writer.setOutput(outImage);
writer.write(new IIOImage(img, null, null));
}
}
至此代码部分结束,上面用的jar文件是icepdf-core-4.3.3.jar,大家可以上网上搜索下载!
还没有评论,来说两句吧...