⑴ 使用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";
}