⑴ 使用java向ftp上传图片上传失败,无异常,但是刷新ftp目录没有创建文件,这是我网上扒的工具类代码
我也不是很会但是我感觉你的路径不能填写IP必需是以电脑的绝对路径吧.
⑵ java实现图片上传至服务器并显示,如何做
给你段代码,是用来在ie上显示图片的(servlet):
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
File file = new File(getServletContext().getRealPath("/")+"out"+"/"+id+".gif");
response.setCharacterEncoding("gb2312");
response.setContentType("doc");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(file.getName().getBytes("gb2312"),"iso8859-1"));
System.out.println(new String(file.getName().getBytes("gb2312"),"gb2312"));
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b))!=-1)
{
output.write(b, 0, i);
}
output.write(b, 0, b.length);
output.flush();
response.flushBuffer();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
}
这个程序的功能是根据传入的文件名(id),来为浏览器返回图片流,显示在<img>标签里
标签的格式写成如下:
<img src="http://localhost:8080/app/preview?id=111 "/><br/>
显示的是111.gif这个图片
你上面的问题:
1.我觉得你的第二个办法是对的,我们也是这样做的,需要的是把数据库的记录id号传进servlet,然后读取这条记录中的路径信息,生成流以后返回就是了
关于上传文件的问题,我记得java中应该专门有个负责文件上传的类,你调用就行了,上传后存储在指定的目录里,以实体文件的形式存放
你可以参考这个:
http://blog.csdn.net/arielxp/archive/2004/09/28/119592.aspx
回复:
1.是的,在response中写入流就行了
2.是发到servlet中的,我们一般都是写成servlet,短小精悍,使用起来方便,struts应该也可以,只是我没有试过,恩,你理解的很对
⑶ java上传图片的压缩从2M->300K的技术有哪些或者用到什么东西哪些更好求详解!!
java 图片压缩工具类 解释很详细的 仔细研究研究
⑷ 跪求一个java 上传图片到服务器的工具类
/**
*文件上传处理主程序。
*
*@returnint操作结果0文件操作成功;1request对象不存在。2没有设定文件保存路径或者文件保存路径不正确;3
*没有设定正确的enctype;4文件操作异常。
*/
publicMap<String,String>fileupload_java(HttpServletRequestrequest,Stringuploadpath){
Map<String,String>param=newHashMap<String,String>();
try{
//参数或者文件名
Stringname=null;
//参数的value
Stringvalue=null;
//读取的流是否为文件的标志位
booleanfileFlag=false;
//要存储的文件。
FiletmpFile=null;
//上传的文件的名字
StringfName=null;
FileOutputStreambaos=null;
BufferedOutputStreambos=null;
intrtnPos=0;
byte[]buffs=newbyte[BUFSIZE*8];
//取得ContentType
StringcontentType=request.getContentType();
intindex=contentType.indexOf("boundary=");
Stringboundary="--"+contentType.substring(index+9);
StringendBoundary=boundary+"--";
//从request对象中取得流。
ServletInputStreamsis=request.getInputStream();
//读取1行
while((rtnPos=sis.readLine(buffs,0,buffs.length))!=-1){
StringstrBuff=newString(buffs,0,rtnPos);
if(strBuff.startsWith(boundary)){
if(name!=null&&name.trim().length()>0){
if(fileFlag){
bos.flush();
baos.close();
bos.close();
baos=null;
bos=null;
param.put(name,tmpFile.getAbsolutePath());
}else{
StringparamValue=param.get(name);
paramValue+=","+value;
param.put(name,paramValue);
}
}
name=newString();
value=newString();
fileFlag=false;
fName=newString();
rtnPos=sis.readLine(buffs,0,buffs.length);
if(rtnPos!=-1){
strBuff=newString(buffs,0,rtnPos);
if(strBuff.toLowerCase().startsWith("content-disposition:form-data;")){
intnIndex=strBuff.toLowerCase().indexOf("name="");
intnLastIndex=strBuff.toLowerCase().indexOf(""",nIndex+6);
name=strBuff.substring(nIndex+6,nLastIndex);
}
intfIndex=strBuff.toLowerCase().indexOf("filename="");
if(fIndex!=-1){
fileFlag=true;
intfLastIndex=strBuff.toLowerCase().indexOf(""",fIndex+10);
//fName=strBuff.substring(fIndex+10,fLastIndex);
fName=newString(strBuff.substring(fIndex+10,fLastIndex).getBytes(),"gbk");
fName=FileL.getFileNameWithoutSeprater(fName);
if(fName==null||fName.trim().length()==0){
fileFlag=false;
sis.readLine(buffs,0,buffs.length);
sis.readLine(buffs,0,buffs.length);
sis.readLine(buffs,0,buffs.length);
continue;
}else{
fName=FileL.getFileNameTime(fName);
sis.readLine(buffs,0,buffs.length);
sis.readLine(buffs,0,buffs.length);
}
}
}
}elseif(strBuff.startsWith(endBoundary)){
if(name!=null&&name.trim().length()>0){
if(fileFlag){
bos.flush();
baos.close();
bos.close();
baos=null;
bos=null;
param.put(name,tmpFile.getAbsolutePath());
}else{
StringparamValue=param.get(name);
paramValue+=","+value;
param.put(name,paramValue);
}
}
}else{
if(fileFlag){
if(baos==null&&bos==null){
tmpFile=newFile(uploadpath+fName);
baos=newFileOutputStream(tmpFile);
bos=newBufferedOutputStream(baos);
}
bos.write(buffs,0,rtnPos);
baos.flush();
}else{
value=value+strBuff;
}
}
}
}catch(IOExceptione){
e.printStackTrace();
}
returnparam;
}
⑸ java 图片上传
//1.初始化smartupload对象
SmartUpload su=new SmartUpload();
su.initialize(pageContext);
//2.定义上传文件类型
su.setAllowedFilesList("gif,jpg,doc,txt");
//3.不允许上传类型
su.setDeniedFilesList("jsp,asp,html,exe,bat");
//4.设置字符编码、
su.setCharset("UTF-8");
//5.设置的单个上传最大限制
su.setMaxFileSize(5*1024*1024);
//6.总共上传限制
su.setTotalMaxFileSize(20*1024*1024);
//7.上传
su.upload();
//su.getFiles().getCount() 获取上传数
File file=su.getFiles().getFile(0);
String filename=file.getFileName();
System.out.print(filename);
String filepath="upload\\";
filepath+=file.getFileName();
file.saveAs(filepath,SmartUpload.SAVE_VIRTUAL);
⑹ java实现图片上传至服务器并显示,如何做希望要具体的代码实现
如果楼主要真的想要的话..
我发给楼主就行了...我做过这个..
楼主网络HI我!!! 我的直接可以看运行效果!!
呵呵 ....
祝楼主早日成功!
⑺ java 图片自动上传问题。。
二楼不知道在说什么 你图片在本地的,代码在服务器上运行的,本机测试做多了吧。。。。。 我也遇到了这个问题我的是高拍仪 也是只能通过<input type=file>来实现 不过这个标签是只读的 不能给他用JS赋值 所以要用户点一下浏览把刚才拍的图片选中手 以File的形势传到Action中,这显然不行的,所以现在想了2个方案 第一个就是用高拍仪的接口 有返回图片Base64编码的 你可以看一下你的扫描仪是否也有提供 如果没有的话可以在服务器端架设一个FTP 用FTP上传 是在不行 用VB或者VC写控件吧。。。
⑻ Java中如何图片异步上传
在java中要实现异步上传要提前做好准备,对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。
这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。
common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。剩下的就是js文件的导入了,我导入了以下文件:
<script type="text/javascript" src="lib/Js/jquery.js"></script>
<script ltype="text/javascript" src="/js/ajaxfileupload.js"></script>
在页面中的写法:
div class="controls"><span class="btn green fileinput-button"><i class="icon-plus icon-white"></i>
<span>上传照片</span>
<input id="fileToUpload" name="myfiles" type="file" onchange="upload()" title="上传" /></span>
</div>function upload(){
$.ajaxFileUpload
(
{
url:'<%=basePath%>sysperson/uploadpic',
secureuri:false,
fileElementId:'fileToUpload',
dataType: 'text',
success: function (data, status)
{
document.all.mypic.src="<%=basePath%>uploads/" + data;
document.all.picpath.value = data;
}, error : function(data, status, e) {
alert(e);
}
});
}
⑼ java使用GameUtil工具类来导入图片问题
你给出的信息很少。不能很准确的定位错误。
看你的代码猜测,是你的方法参数path,传进来的值有问题。
从你的使用上来说。这个path应该 是资源的路径,不是物理路径。
物理路径 如:c:\image\a.jpg
资源路径,是你工程里的有一个包如:resource.image
图片在这个包里。那这个path的值应该 是/resource/image/a.jpg
这个是跟据你给出的信息和代码猜的。
另一个你的错误中有input == null,你看看有没有input这个变量没有赋值。
⑽ 请问用Java 如何实现图片上传功能
我有一段上传图片的代码,并且可以根据实际,按月或按天等,生成存放图片的文件夹
首先在JSP上放一个FILE的标签这些我都不说了,你也一定明白,我直接把处理过程给你发过去
我把其中存到数据库中的内容删除了,你改一下就能用
/**
*
* 上传图片
* @param servlet
* @param request
* @param response
* @return
* @throws Exception
*/
//这里我是同步上传的,你随意
public synchronized String importPic(HttpServlet servlet, HttpServletRequest request,HttpServletResponse response) throws Exception {
SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMM");
Date nowtime=new Date();
String formatnowtime=formatDate.format(nowtime);
File root = new File(request.getRealPath("/")+"uploadfile/images/"+formatnowtime+"/"); //应保证在根目录中有此目录的存在 如果没有,下面则上创建新的文件夹
if(!root.isDirectory())
{
System.out.println("创建新文件夹成功"+formatnowtime);
root.mkdir();
}
int returnflag = 0;
SmartUpload mySmartUpload =new SmartUpload();
int file_size_max=1024000;
String ext="";
String url="uploadfile/images/"+formatnowtime+"/";
// 只允许上载此类文件
try{
// 初始化
mySmartUpload.initialize(servlet.getServletConfig(),request,response);
mySmartUpload.setAllowedFilesList("jpg,gif,bmp,jpeg,png,JPG");
// 上载文件
mySmartUpload.upload();
} catch (Exception e){
response.sendRedirect()//返回页面
}
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
if (myFile.isMissing()){ //没有选择图片做提示!
returnflag = 3;
}else{
String myFileName=myFile.getFileName(); //取得上载的文件的文件名
ext= myFile.getFileExt(); //取得后缀名
if(ext.equals("jpg")||ext.equals("gif")||ext.equals("bmp")||ext.equals("jpeg")||ext.equals("png")||ext.equals("JPG")){ //jpeg,png不能上传!)
int file_size=myFile.getSize(); //取得文件的大小
String saveurl="";
if(file_size<file_size_max){
try{
//我上面说到,把操作数据库的代友删除了,这里就应该是判断,你的图片是不是已经存在了,存在要怎么处理,不存在要怎么处了,就是你的事了 }
//更改文件名,取得当前上传时间的毫秒数值
Calendar calendar = Calendar.getInstance();
//String filename = String.valueOf(calendar.getTimeInMillis());
String did = contractBean.getMaxSeq("MULTIMEDIA_SEQ");
String filename = did;
String flag = "0";
String path = request.getRealPath("/")+url;
String ename = myFile.getFileExt();
//.toLowerCase()转换大小写
saveurl=request.getRealPath("/")+url;
saveurl+=filename+"."+ext; //保存路径
myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL);
//将图片信息插入到数据库中
// ------上传完成,开始生成缩略图-----
java.io.File file = new java.io.File(saveurl); //读入刚才上传的文件
String newurl=request.getRealPath("/")+url+filename+"_min."+ext; //新的缩略图保存地址
Image src = javax.imageio.ImageIO.read(file); //构造Image对象
float tagsize=200;
int old_w=src.getWidth(null);
int old_h=src.getHeight(null);
int new_w=0;
int new_h=0;
int tempsize;
float tempdouble;
if(old_w>old_h){
tempdouble=old_w/tagsize;
}else{
tempdouble=old_h/tagsize;
}
// new_w=Math.round(old_w/tempdouble);
// new_h=Math.round(old_h/tempdouble);//计算新图长宽
new_w=150;
new_h=110;//计算新图长宽
BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图
FileOutputStream newimage=new FileOutputStream(newurl); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close();
returnflag = 1;
}else{
returnflag = 0;
System.out.println("('上传文件大小不能超过"+(file_size_max/1000)+"K');");
}
}else{
returnflag = 2;
}
}
response.sendRedirect();
return "11";
}