080813 结合使用SWFUpload和SmartUpload

2024-04-14 15:38

本文主要是介绍080813 结合使用SWFUpload和SmartUpload,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前台使用SWFUpload:

<%@ page  contentType="text/html;  charset=GBK"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="com.yourcompany.util.*"%>
<html>
<head>
 <link href="js/default.css" rel="stylesheet" type="text/css" />
 <script type="text/javascript" src="js/swfupload.js"></script>
 <script type="text/javascript" src="js/handlers.js"></script>
   <script src="js/jquery.js" type="text/javascript"></script>
   <script type="text/javacript">
   function g(){
  $.ajax({
    url: 'upload2.jsp',
    date: {c: $('#c').val(), c: $('#c').val()},
    error: function() { alert"fail"},
    success: function(response) { ... }
    });
  }
   </script>
 <script type="text/javascript">

 var swfu;
  window.onload = function () {
  
   swfu = new SWFUpload({
    // Backend Settings
    upload_url: "upload2.jsp", // Relative to the SWF file
    post_params: {"product1": "1"},
        
        use_query_string:false,
    // File Upload Settings
    file_size_limit : "2048", // 2MB
    file_types : "*.jpg",
    file_types_description : "JPG Images",
    file_upload_limit : "0",

    // Event Handler Settings - these functions as defined in Handlers.js
    //  The handlers are not part of SWFUpload but are part of my website and control how
    //  my website reacts to the SWFUpload events.
    file_queue_error_handler : fileQueueError,
    file_dialog_complete_handler : fileDialogComplete,
    upload_progress_handler : uploadProgress,
    upload_start_handler : uploadStart,
    upload_error_handler : uploadError,
    upload_success_handler : uploadSuccess,
    upload_complete_handler : uploadComplete,

 


    // Flash Settings
    flash_url : "js/swfupload_f9.swf", // Relative to this file

    custom_settings : {
     upload_target : "divFileProgressContainer"
    },
    
    // Debug Settings
    debug: false
   });
  }

function uploadStart(file) {
var post_params = this.settings.post_params;
post_params.product = document.getElementById("product").value;
this.setPostParams(post_params);
return true;
}
 </script>
</head>
  <div id="SWFUploadTarget">
<body>

  <div>
   <form action="upload2.jsp" method="get">
    <button id="btnBrowse" type="button" style="padding: 5px;" onClick="swfu.selectFiles(); this.blur();"><img src="images/page_white_add.png" style="padding-right: 3px; vertical-align: bottom;">请选择图片<span style="font-size: 7pt;">(2 MB Max)</span></button>
                    请输入产品ID<input type="text" name="product" id="product" value="">
   </form>
  </div>
  <div id="divFileProgressContainer" style="height: 75px;"></div>
  <div id="thumbnails"></div>
 </div>
</body>
<html>

后台使用SmartUpload:

<%@ page contentType="text/html;charset=gb2312" language="java" import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,
java.sql.*,com.jspsmart.upload.*,java.util.*,com.yourcompany.util.*"%>
<%
SmartUpload mySmartUpload =new SmartUpload();
long file_size_max=4000000;
//add


//初始化
 mySmartUpload.initialize(pageContext);
//只允许上载此类文件
try {
mySmartUpload.setAllowedFilesList("jpg,gif");
//上载文件
mySmartUpload.upload();
} catch (Exception e){
%>
  <SCRIPT language=javascript>
  alert("只允许上传.jpg和.gif类型图片文件");
  window.location=''upfile.jsp'';
  </script>
<%
}
//try{

    com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
    if (myFile.isMissing()){%>
   <SCRIPT language=javascript>
   alert("请先选择要上传的文件");
   window.location=''upfile.jsp'';
   </script>
    <%}
    else{
 
 String fileName2="",ext="",testvar="";
 String productname=mySmartUpload.getRequest().getParameter("product");
 String url="/uploadfile/"+productname+"/";      //应保证在根目录中有此目录的存在


 java.io.File file1 = new java.io.File(request.getRealPath("/") + url );
   if(!file1.exists())
  {
   file1.mkdir();
  }


      //String myFileName=myFile.getFileName(); //取得上载的文件的文件名
   ext= myFile.getFileExt();      //取得后缀名
   int file_size=myFile.getSize();     //取得文件的大小 
   String saveurl="";
   if(file_size<file_size_max){

int temp=1,temp2=0;
    String[] a=myFile.getFileName().split(".jpg");
    String myFileNameo = productname+"_00_pic_big";
 String myFileName = productname+"_0"+temp;
   
    Calendar calendar = Calendar.getInstance();
    String filename = String.valueOf(calendar.getTimeInMillis());
    saveurl=request.getRealPath("/")+url;
    saveurl+=myFileNameo+"."+ext;          //保存路径
   

   
    myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL);
  //  java.io.File  f1   =   new  java.io.File (saveurl);
  //  java.io.File    f2   =   new   java.io.File (request.getRealPath("/")+url+myFileName+"_0_big.jpg");  
  //  f1.renameTo(f2); 
    //out.print(filename);
//-----------------------上传完成,开始生成缩略图------------------------- 
 
 
 
 
 com.yourcompany.util.DirList dirlist = new com.pixel.util.DirList();
  String[] dir =dirlist.list(request.getRealPath("/") + url );


for(int i=0;i<dir.length;i++){
  //for (String i : dir){
  String[] split = dir[i].split("\\.");
      if(split[1].equals("jpg")){  
      String[] split2=split[0].split("\\_");
       //split2[1]=01                
   if(Integer.parseInt(split2[1])>0&Integer.parseInt(split2[1])>=temp2){
   temp2=Integer.parseInt(split2[1])+1;
   }
   if(Integer.parseInt(split2[1])==0){
   temp2=1;
   }
     }

if(temp2<=10){
myFileName = productname+"_0"+temp2;
}else{
myFileName = productname+"_"+temp2;
}

 

   
 //myFileName = mySmartUpload.getRequest().getParameter("product");
    java.io.File file = new java.io.File(saveurl);        //读入刚才上传的文件
    String newurl=request.getRealPath("/")+url+myFileName+"_70_min."+ext;  //新的缩略图保存地址
    Image src = javax.imageio.ImageIO.read(file);                     //构造Image对象
    float tagsize=70;
    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);//计算新图长宽
    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编码
     
            //读入刚才上传的文件
    newurl=request.getRealPath("/")+url+myFileName+"_130_min."+ext;  //新的缩略图保存地址
    //Image src = javax.imageio.ImageIO.read(file);                     //构造Image对象
    tagsize=130;
  //  int old_w2=src2.getWidth(null);                                     //得到源图宽
  //  int old_h2=src2.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);//计算新图长宽
     tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);       //绘制缩小后的图
    newimage=new FileOutputStream(newurl);          //输出到文件流
    encoder = JPEGCodec.createJPEGEncoder(newimage);      
    encoder.encode(tag);                                               //近JPEG编码
   
     newurl=request.getRealPath("/")+url+myFileName+"_180_min."+ext;  //新的缩略图保存地址
    //Image src = javax.imageio.ImageIO.read(file);                     //构造Image对象
    tagsize=180;
  //  int old_w2=src2.getWidth(null);                                     //得到源图宽
  //  int old_h2=src2.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);//计算新图长宽
     tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);       //绘制缩小后的图
    newimage=new FileOutputStream(newurl);          //输出到文件流
    encoder = JPEGCodec.createJPEGEncoder(newimage);      
    encoder.encode(tag);                                               //近JPEG编码

     newurl=request.getRealPath("/")+url+myFileName+"_500_min."+ext;  //新的缩略图保存地址
    //Image src = javax.imageio.ImageIO.read(file);                     //构造Image对象
    tagsize=500;
  //  int old_w2=src2.getWidth(null);                                     //得到源图宽
  //  int old_h2=src2.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);//计算新图长宽
     tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);       //绘制缩小后的图
    newimage=new FileOutputStream(newurl);          //输出到文件流
    encoder = JPEGCodec.createJPEGEncoder(newimage);      
    encoder.encode(tag);                                               //近JPEG编码

 newurl=request.getRealPath("/")+url+myFileName+"_800_min."+ext;  //新的缩略图保存地址
    //Image src = javax.imageio.ImageIO.read(file);                     //构造Image对象
    tagsize=800;
  //  int old_w2=src2.getWidth(null);                                     //得到源图宽
  //  int old_h2=src2.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);//计算新图长宽
     tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);       //绘制缩小后的图
    newimage=new FileOutputStream(newurl);          //输出到文件流
    encoder = JPEGCodec.createJPEGEncoder(newimage);      
    encoder.encode(tag);                                               //近JPEG编码
 
 
  newimage.close(); 

   }
   else{
    out.print("<SCRIPT language=''javascript''>");
    out.print("alert(''上传文件大小不能超过"+(file_size_max/1000)+"K'');");
    out.print("window.location=''upfile.jsp;''");
    out.print("</SCRIPT>");
   }
  }
//}catch (Exception e){

//e.toString();

//}
%>



其中:
com.yourcompany.util.DirList dirlist = new com.yourcompany.DirList();
  String[] dir =dirlist.list(request.getRealPath("/") + url );


for(int i=0;i<dir.length;i++){
  //for (String i : dir){
  String[] split = dir[i].split("\\.");
      if(split[1].equals("jpg")){  
      String[] split2=split[0].split("\\_");
       //split2[1]=01                
   if(Integer.parseInt(split2[1])>0&Integer.parseInt(split2[1])>=temp2){
   temp2=Integer.parseInt(split2[1])+1;
   }
   if(Integer.parseInt(split2[1])==0){
   temp2=1;
   }
     }

if(temp2<=10){
myFileName = productname+"_0"+temp2;
}else{
myFileName = productname+"_"+temp2;
}


这部分调用一个方法,读取目录里的文件名,并重新按照01、02、03的顺序命名。
获取目录里的文件名的类:

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.regex.Pattern;
public class DirList {
 public String[] list(String thepath) {  
  File path = new File(thepath);  
  String[] list;  
  list = path.list();  
  Arrays.sort(list, new AlphabeticComparator());
  return list;
 }
}

class DirFilter implements FilenameFilter { 
 private Pattern pattern;  public DirFilter(String regex) {
  pattern = Pattern.compile(regex);  }
 public boolean accept(File dir, String name) {  
  // Strip path information, search for regex:  
  return pattern.matcher(new File(name).getName()).matches();
  }
 }

class AlphabeticComparator implements Comparator {
 public int compare(Object o1, Object o2) {  
  String s1 = (String) o1;    String s2 = (String) o2;   
  return s1.toLowerCase().compareTo(s2.toLowerCase()); 
  }
 }

这篇关于080813 结合使用SWFUpload和SmartUpload的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903373

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud