package cms.xxx.common.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; import org.apache.struts2.ServletActionContext; import cms.xxx.common.struts2.action.BaseAction; import com.opensymphony.xwork2.ActionSupport; /** * 保证有commons-fileupload.jar,Commons-io.jar,注意jsp传过来的File的name="imgFile",配置文件加上<interceptor-ref name="fileUploadStack"></interceptor-ref> * 包含上传的只需要继承FileUploadAction,自定义一个方法,使用FileUploadAction属性操作上传,例子cms.huisou.info.action.AddHcinfoAct的upload,需要上传的时候只需要this.upload(); */ public class FileUploadAction extends BaseAction { org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest f; protected static final int BUFFER_SIZE = 16 * 1024; protected File imgFile; protected String imgFileContentType; protected String imgFileFileName; public File getImgFile() { return imgFile; } public void setImgFile(File imgFile) { this.imgFile = imgFile; } public String getImgFileContentType() { return imgFileContentType; } public void setImgFileContentType(String imgFileContentType) { this.imgFileContentType = imgFileContentType; } public String getImgFileFileName() { return imgFileFileName; } public void setImgFileFileName(String imgFileFileName) { this.imgFileFileName = imgFileFileName; } protected static void copy(File src, File dst) { try { InputStream in = null ; OutputStream out = null ; try { in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE); out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE); byte [] buffer = new byte [BUFFER_SIZE]; while (in.read(buffer) > 0 ) { out.write(buffer); } } finally { if ( null != in) { in.close(); } if ( null != out) { out.close(); } } } catch (Exception e) { e.printStackTrace(); } } protected static String getExtention(String fileName) { int pos = fileName.lastIndexOf("."); return fileName.substring(pos); } }
class AddHcinfoAct extends FileUploadAction 代码写道
public void upload() { imgFileFileName = new Date().getTime()+ getExtention(imgFileFileName); File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/UploadImages")+ "/" + imgFileFileName); copy(imgFile, imageFile); }
注意JSP提交的时候加上:
enctype="multipart/form-data"
然后在相应的方法调用this.upload()即可
好一段时间因为时间忙,偶尔光顾下javaeye。
我记得以前做过用htmlparser抓取的img标签,然后要把所有的图片上传到图片服务器上,这期间经历了好多的波折,刚开始直接写流,不行,因为想javaeye,百度等有的图片路径是非正常路径的。比如:www.javaeye/upload/test.jpg2005-1-1/ 这显示的是一个图片,但是我写流就出现了问题,而且对百度的图片不能抓取。第二次改进方案,用百度爬虫写流,但是我不知道为何,到上传到服务器后图片变形了。这种方案不行,后来用了httpclient,当我试啦试百度和javaeye后,很惊喜,都可以,后来测试了很多的非正常的图片,也未发现有不行的情况存在。
1: 普通的地址图片上传,只能上传普通的地址一般是后缀jpg,png,gif之类的图片。其中imgurl是图片地址路径,disppath为保存的文件夹,name是文件名
URL u = new URL(imgurl); URLConnection uc = u.openConnection(); InputStream in = uc.getInputStream(); OutputStream out = new FileOutputStream(disppath+ name); byte[] buffer = new byte[1024]; while (in.read(buffer) > 0) { out.write(buffer); } out.flush(); out.close(); in.close();
2: 可以上传特殊的图片,后缀可以是/180,/order等等特殊图片路径的
public void readFileAndWrite(String Stringurl,String targetPath) { try { System.getProperties(); URL url = new URL(Stringurl); URLConnection urlconnection = url.openConnection(); urlconnection.setDoInput(true); urlconnection.setDoOutput(true); urlconnection.setUseCaches(false); urlconnection.setRequestProperty("User-Agent", "Baiduspider+(+http://www.baidu.com/search/spider.htm)"); urlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); InputStream input = urlconnection.getInputStream(); File dest = new File(targetPath); FileOutputStream out = new FileOutputStream(dest); int b = 0; while((b= input.read())!=-1) out.write(b); out.close(); input.close(); } catch (Exception u8e) { log.error(u8e.getMessage()); throw new RuntimeException(u8e.getMessage()); } }
3: 上面两种可能方,案都不能上传这样的图片百度很特殊的图片,百度图片屏蔽啦一些不法的读取文件,下面是模拟客户端来抓取图片,上传需要三个jar包:httpcore-4.0.1.jar,httpclient-4.0.jar,commons-logging-1.1.1.jar,代码实例:
HttpClient httpclient = new DefaultHttpClient(); String url = "http://img.baidu.com/img/iknow/adphoto/Uhuoqb.jpg"; // 生成一个请求对象 HttpGet httpget = new HttpGet(url); httpget.setHeader("referer", "http://www.baidu.com/"); // 执行请求 HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream in = entity.getContent(); int b = 0; FileOutputStream out = new FileOutputStream("a.jpg"); while ((b = in.read()) != -1) { System.out.println(b); out.write(b); } out.close(); in.close(); } httpclient.getConnectionManager().shutdown();
部分代码: // htmlparser抓取图片
public static String parserto(String contentString,String pathString,String httpurl) { String stringBuffer=null; Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmssms"); try { List list = new ArrayList(); Parser parser = Parser.createParser(contentString, "UTF-8"); NodeList nodeList = parser .extractAllNodesThatMatch(new NodeFilter() { public boolean accept(Node node) { if (node instanceof ImageTag)// <img>标记 return true; return false; } }); if(nodeList.size()>0){ for (int i = 0; i < nodeList.size(); i++) { String url = ((ImageTag) nodeList.elementAt(i)).getImageURL(); url=StrUtils.htm2txt(url); Random ran = new Random(); int a = ran.nextInt(1000); String imgname = simpleDateFormat.format(new Date())+a+".jpg"; String reurl = ((ImageTag) nodeList.elementAt(i)).getImageURL(); contentString=contentString.replace(reurl, httpurl + imgname); // pathString = "C:\\Documents and Settings\\Administrator\\桌面\\t\\"; writeimg(url,pathString+imgname); } } } catch (Exception e) { } contentString.replaceAll(" ", ""); return contentString; } //httpclient模拟器写图片,几乎所有格式的图片都可以,ftp方式的图片? http ! public static void writeimg(String url,String targetPath) throws ClientProtocolException, IOException { HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url); httpget.setHeader("referer", "http://www.baidu.com/"); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream in = entity.getContent(); int b = 0; FileOutputStream out = new FileOutputStream(new File(targetPath)); while ((b = in.read()) != -1) { out.write(b); } out.close(); in.close(); } httpclient.getConnectionManager().shutdown(); }
注意:htmlparser和httpclient需要添加相应的jar
相关推荐
在本例中,我们关注的是如何利用 ASP.NET 实现从应用服务器向图片服务器异步上传图片的功能。这一过程涉及到两个主要服务器角色:应用服务器和图片服务器。 首先,我们会在图片服务器上创建一个 IIS 项目,这个项目...
在C# WinForm应用开发中,上传照片到服务器是一个常见的需求,这涉及到客户端与服务器之间的文件传输技术。本文将深入探讨如何实现这个功能,以及如何根据要求修改照片的名字。 首先,我们需要了解C#中的文件操作...
本文将深入探讨如何通过Base64编码实现图片的上传至服务器以及从服务器读取图片的过程。 Base64是一种用于在网络上传输二进制数据的编码方式,它将原始的二进制数据转换为ASCII字符,以便于在只支持文本的环境中...
本文将详细讲解如何在Unity中利用HTTP请求上传图片到服务器,这里以Tomcat服务器为例。 首先,Unity提供了UnityWebRequest(UWR)类来处理HTTP请求,它是Unity 5.5版本后引入的,用于替换过时的WWW类。UWR支持异步...
标题提及的“上传图片到服务器”是指通过编程方式将用户的图片文件发送到远程服务器的过程。这通常涉及到客户端(如Web浏览器)与服务器之间的HTTP交互。描述中提到的问题可能是由于使用了过时或者不兼容的`...
本文将详细解析"上传图片,可上传至服务器并且可以读取.rar"这一主题,涵盖图片上传的流程、技术实现、服务器端处理以及安全考虑等多个方面。 1. 图片上传流程: 用户在前端界面选择本地图片后,通过HTTP或HTTPS...
在JavaScript中实现图片上传到服务器的过程通常涉及到前端的文件选取、本地预览、Base64编码,以及与后端服务器的交互。以下是对这个过程的详细解析: 1. **前端文件选取**: - HTML部分提供了`...
### C# WinForm 上传图片文件到服务器的方法 在C# WinForm开发中,上传文件尤其是图片文件到服务器是一项常见的需求。本文将详细介绍如何利用C#实现这一功能,并结合提供的部分代码示例进行深入解析。 #### 一、...
**一、使用NSURLSession上传图片** 1. **创建请求对象**: 使用`NSMutableURLRequest`创建一个POST请求,设置URL、HTTP方法("POST")以及Content-Type(一般设为"multipart/form-data",用于上传二进制数据)。 2. ...
本资源提供了一个完整的示例,涵盖了Android客户端如何上传图片以及服务器如何接收和处理这些图片的全过程。以下是关于这个过程的一些关键知识点: 1. **Android图片选择与预处理**: - 使用`Intent`调用系统图库...
总结来说,实现"java上传图片至服务器并且返回下载URL"的功能,主要涉及HTTP文件上传、文件存储、路径管理、响应处理和安全性控制等多个方面,结合Servlet、Spring等相关技术可以有效地完成这一任务。在开发过程中,...
4. 权限控制:根据用户角色和权限,控制谁可以上传图片以及可以上传多少图片。 5. 存储优化:例如,使用数据库存储文件元数据,或者使用云存储服务来分发和管理大量图片。 在提供的文件列表中,`update.asp`可能是...
java图片上传到服务器以及在服务器上图片修改删除,可以从前端获取图片后端接收然后保存,还可以修改图片修改之前会删除原来的图片。
Java上传图片到服务器 对于图片处理有两种: 一种是插入数据库;一种是上传到服务器上。
综上所述,Android上传图片至服务器的过程涉及到客户端的图片获取、处理、请求创建和发送,以及服务器端的文件接收、保存和响应。在实际开发中,还需要关注安全性、性能优化和错误处理等方面,以提供稳定、高效的...
C# WinForm源代码,可以实现定时截取当前屏幕,然后存为本地图片,再将其上传至远程服务器端,上传图片到服务器。也包含上传文件到服务器端的方法。通过Ftp协议上传,更改源代码中ftp中IP地址、用户名及密码即可使用...
在IT行业中,图片压缩与上传服务器是一个常见的需求,特别是在网页设计、移动应用开发以及云存储等领域。"压缩图片上传服务器工具"就是针对这一需求而设计的解决方案,它可以帮助用户有效地减小图片文件大小,以便更...
四、上传图片 1. 创建上传方法:在WinForm中,创建一个按钮或菜单项,绑定点击事件。在事件处理函数中,实现图片上传的逻辑。 2. 选择图片:使用OpenFileDialog控件让用户选择要上传的图片文件。 3. 转换为Byte数组...
在安卓应用开发中,用户经常需要上传图片到服务器进行存储或分享。这个场景涉及到了安卓客户端与Java服务器之间的数据交互,通常使用HTTP或HTTPS协议来完成。本文将深入讲解如何在安卓端实现图片上传功能,并在Java...