java 依据File图片文件对象或者http图片文件url将图片文件写到服务器
2013-12-30 10:34
501 查看
背景:项目中需要依据上传的图片或者贴在文本框的图片地址url,获得图片文件,并将图片生成到服务器指定目录
先上代码
1.生成的文件随机名格式:日期+随机四位数+后缀名
2.开流后需要记得在用完后需要关掉
3.流操作,文件操作记得try...catch监视下,或者在方法定义的时候throw抛出异常,在调用的地方做try...catch也可以
先上代码
package com.eelly.imagesearch.common; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.channels.FileChannel; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; public class FileCommendDeal { /** * 将文件file写入到指定的目录中 * @param file * @param path * @param fileName * @return 写完后的文件地址 */ public String writeFileToPath(File file, String path, String fileName) { // 文件成功写入到指定存放目录 String successsWriteFileName = ""; Random random = new Random(); //设置日期格式 SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String tempName = df.format(new Date())+random.nextInt(10000)+"."+fileName; String filePath = path+"/"+tempName; FileChannel in = null; FileChannel out = null; FileInputStream inStream = null; FileOutputStream outStream = null; try { inStream = new FileInputStream(file); // 用filePath创建一个空文件将file文件流写入 File writeFile = new File(filePath); if (!writeFile.exists()) { writeFile.createNewFile(); } outStream = new FileOutputStream(writeFile); in = inStream.getChannel(); out = outStream.getChannel(); in.transferTo(0, in.size(), out); in.close(); inStream.close(); out.close(); outStream.close(); successsWriteFileName = tempName; } catch (IOException e) { successsWriteFileName = ""; e.printStackTrace(); } return successsWriteFileName; } /** * 将http请求获得的流写入到指定的目录中 * @param file * @param path * @param fileName * @return 写完后的文件地址 */ public String writeHttpImgToPath(String imgurl, String path, String fileType) { // 文件成功写入到指定存放目录 String successsWriteFileName = ""; Random random = new Random(); // 设置日期格式 SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String tempName = df.format(new Date())+random.nextInt(10000)+"."+fileType; String filePath = path+"/"+tempName; try { //new一个URL对象 URL url = new URL(imgurl); //打开链接 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置请求方式为"GET" conn.setRequestMethod("GET"); //超时响应时间为5秒 conn.setConnectTimeout(5 * 1000); //通过输入流获取图片数据 InputStream inputio = conn.getInputStream(); //创建一个输出流 ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); //创建一个Buffer字符串 byte[] buffer = new byte[1024]; //每次读取的字符串长度,如果为-1,代表全部读取完毕 int len = 0; //使用一个输入流从buffer里把数据读取出来 while( (len=inputio.read(buffer)) != -1 ){ // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 byteOutStream.write(buffer, 0, len); } // 关闭输入流 inputio.close(); // 得到图片的二进制数据,以二进制封装得到数据,具有通用性 byte[] data = byteOutStream.toByteArray(); // 依据指定目录文件new一个文件对象用来保存图片 File imageFile = new File(filePath); // 创建输出流 FileOutputStream outStream = new FileOutputStream(imageFile); // 写入数据 outStream.write(data); // 关闭输出流 outStream.close(); successsWriteFileName = filePath; } catch (IOException e) { successsWriteFileName = ""; e.printStackTrace(); } return successsWriteFileName; } }备注:
1.生成的文件随机名格式:日期+随机四位数+后缀名
2.开流后需要记得在用完后需要关掉
3.流操作,文件操作记得try...catch监视下,或者在方法定义的时候throw抛出异常,在调用的地方做try...catch也可以
相关文章推荐
- java HttpURLConnection下载服务器上的文件
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- Java Springboot结合FastDFS实现文件上传以及根据图片url将图片上传至图片服务器
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- HttpURLConnection 上传图片(文件)到服务器
- 使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法
- Android开发之下载服务器上的一张图片到本地java代码实现HttpURLConnection
- java上传文件到远程服务器(一)---HttpURLConnection方式
- 使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法
- 使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法
- [置顶] Android开发之下载服务器上的一张图片到本地java代码实现HttpURLConnection
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- 利用 HTML 5 的多图片上传及预览(不含前端的文件分割) 分类: HTML5 文件上传 上传图片的预览 XMLHTTPRequest对象 2014-01-13 11:05 419人阅读 评论(0) 收藏
- 如何将一个Java对象写到文件里
- java中使用scoket模拟http post请求发送图片或文件
- Java使用HttpURLConnection上传文件
- ASP.NET、JAVA跨服务器远程上传文件(图片)的相关解决方案整合