java上傳圖片,java上傳圖片怎麼實現

本文目錄一覽:

JAVA 如何使用curl微信上傳圖片

$varname = ‘media’;//上傳到$_FILES數組中的 key  

$name = ‘2.jpg’;//文件名   

$type = ‘text/plain’;//文件類型   

$key = “$varname\”; filename=\”$name\r\nContent-Type: $type\r\n”;  

$re=new SaeStorage(Access Key,Secret Key);

$ss=$re-read(domain,文件名);

$fields[$key] = $ss;

$url = “;type=TYPE”; //上傳地址  

$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, $url);//URL  

curl_setopt($ch, CURLOPT_POST, 1);  //模擬POST  

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);//POST內容  

curl_exec($ch);

var_dump(curl_error($ch));  

curl_close($ch)

用java怎麼上傳圖片到項目指定的文件夾

你的意思是拷貝嗎,還是上傳到伺服器什麼的

import java.io.*;

/**

* 複製文件夾或文件夾

*/

public class CopyDirectory {

// 源文件夾

static String url1 = “f:/photos”;

// 目標文件夾

static String url2 = “d:/tempPhotos”;

public static void main(String args[]) throws IOException {

// 創建目標文件夾

(new File(url2)).mkdirs();

// 獲取源文件夾當前下的文件或目錄

File[] file = (new File(url1)).listFiles();

for (int i = 0; i file.length; i++) {

if (file[i].isFile()) {

// 複製文件

copyFile(file[i],new File(url2+file[i].getName()));

}

if (file[i].isDirectory()) {

// 複製目錄

String sourceDir=url1+File.separator+file[i].getName();

String targetDir=url2+File.separator+file[i].getName();

copyDirectiory(sourceDir, targetDir);

}

}

}

// 複製文件

public static void copyFile(File sourceFile,File targetFile)

throws IOException{

// 新建文件輸入流並對它進行緩衝

FileInputStream input = new FileInputStream(sourceFile);

BufferedInputStream inBuff=new BufferedInputStream(input);

// 新建文件輸出流並對它進行緩衝

FileOutputStream output = new FileOutputStream(targetFile);

BufferedOutputStream outBuff=new BufferedOutputStream(output);

// 緩衝數組

byte[] b = new byte[1024 * 5];

int len;

while ((len =inBuff.read(b)) != -1) {

outBuff.write(b, 0, len);

}

// 刷新此緩衝的輸出流

outBuff.flush();

//關閉流

inBuff.close();

outBuff.close();

output.close();

input.close();

}

// 複製文件夾

public static void copyDirectiory(String sourceDir, String targetDir)

throws IOException {

// 新建目標目錄

(new File(targetDir)).mkdirs();

// 獲取源文件夾當前下的文件或目錄

File[] file = (new File(sourceDir)).listFiles();

for (int i = 0; i file.length; i++) {

if (file[i].isFile()) {

// 源文件

File sourceFile=file[i];

// 目標文件

File targetFile=new

File(new File(targetDir).getAbsolutePath()

+File.separator+file[i].getName());

copyFile(sourceFile,targetFile);

}

if (file[i].isDirectory()) {

// 準備複製的源文件夾

String dir1=sourceDir + “/” + file[i].getName();

// 準備複製的目標文件夾

String dir2=targetDir + “/”+ file[i].getName();

copyDirectiory(dir1, dir2);

}

}

}

}

Java 中圖片上傳問題

e,伺服器可以用ServerSocket,客戶端用Socket

然後就

Socket s=new Socket……………

OutputStream out=s.getOutputStream();

File f=圖片文件;

FileInputStream in=new FileInputStream(f);

byte data[]=byte[1024];

int length=0;

while((length=in.read(data,0,1024))!=-1) out.write(data,0,length);

out.close();

in.close();

伺服器端

ServerSocket s=new ServerSocket……………

//accept…..

InputStream in=s.getInputStream();

File f=圖片文件;

FileOutputStream out=new FileOutputStream(f);

byte data[]=byte[1024];

int length=0;

while((length=in.read(data,0,1024))!=-1) out.write(data,0,length);

out.close();

in.close();

然後伺服器接到請求時(這個是Servlet)

PrintWriter writer=resp.getWriter(); //resp–HttpServletResponse

….

writer.print(“img src=\”+圖片路徑+”\””);

That’s all.

用java完成圖片多張批量上傳的功能,還有就是後台的應該怎麼處理上傳的照片。

環境準備

1. 下載並安裝Tomcat(已經有很多關於Tomcat安裝以及使用的文章,在這裡不再介紹);

2. 下載File upload的jar包commons-fileupload-1.0-beta-1.jar,並將該文件拷貝到{$TOMCAT}/common/lib目錄下(其中{$TOMCAT}為Tomcat的安裝目錄);

3. 由於Fileupload子項目同時要用到另外一個項目commons-Beanutils,所以必須下載Beanutils,並將解壓後的文件commons-beanutils.jar拷貝到{$TOMCAT}/common/lib目錄下。

開發文件上傳頁面

文件上傳的界面如圖1所示。為了增加效率我們設計了三個文件域,同時上傳三個文件。

圖1 文件上傳界面

頁面的HTML代碼如下:

html

head

title文件上傳演示/title

/head

body bgcolor=「#FFFFFF」text=「#000000」 leftmargin=「0」topmargin=「40」marginwidth=「0」 marginheight=「0」

center

h1文件上傳演示/h1

form name=「uploadform」method=「POST」 action=「save.jsp」ENCTYPE=「multipart/form-data」

table border=「1」width=「450」cellpadding=「4」 cellspacing=「2」bordercolor=「#9BD7FF」

trtd width=「100%」colspan=「2」

文件1:input name=「file1」size=「40」type=「file」

/td/tr

trtd width=「100%」colspan=「2」

文件2:input name=「file2」size=「40」type=「file」

/td/tr

trtd width=「100%」colspan=「2」

文件3:input name=「file3」size=「40」type=「file」

/td/tr

/table

br/br/

table

trtd align=「center」input name=「upload」 type=「submit」value=「開始上傳」//td/tr

/table

/form

/center

/body

/html

代碼中要特別注意的是黑體處。必須保證表單的ENCTYPE屬性值為multipart/form-data,這樣瀏覽器才能正確執行上傳文件的操作。

處理上傳文件信息

由於本文主要是講述如何使用Commons-fileupload,所以為了便於修改、調試,上傳文件的保存使用一個JSP文件來進行處理。我們將瀏覽器上傳來的所有文件保存在一個指定目錄下並在頁面上顯示所有上傳文件的詳細信息。保存頁面處理結果見圖2所示。

圖2 保存頁面

下面來看看save.jsp的代碼:

%

/**

* 演示文件上傳的處理

* @author a href=「mailto:winter.lau@163.com」Winter Lau/a

* @version $Id: save.jsp,v 1.00 2003/03/01 10:10:15

*/

%

%@ page language=「java」contentType=「text/html;charset=GBK」%

%@ page import=「java.util.*」%

%@ page import=「org.apache.commons.fileupload.*」%

html

head

title保存上傳文件/title

/head

%

String msg = 「」;

FileUpload fu = new FileUpload();

// 設置允許用戶上傳文件大小,單位:位元組

fu.setSizeMax(10000000);

// maximum size that will be stored in memory?

// 設置最多只允許在內存中存儲的數據,單位:位元組

fu.setSizeThreshold(4096);

// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄

fu.setRepositoryPath(「C:\\TEMP」);

//開始讀取上傳信息

List fileItems = fu.parseRequest(request);

%

body bgcolor=「#FFFFFF」text=「#000000」 leftmargin=「0」topmargin=「40」marginwidth=「0」 marginheight=「0」

font size=「6」color=「blue」文件列表:/font

center

table cellpadding=0 cellspacing=1 border=1 width=「100%」

tr

td bgcolor=「#008080」文件名/td

td bgcolor=「#008080」大小/td

/tr

%

// 依次處理每個上傳的文件

Iterator iter = fileItems.iterator();

while (iter.hasNext()) {

FileItem item = (FileItem) iter.next();

//忽略其他不是文件域的所有表單信息

if (!item.isFormField()) {

String name = item.getName();

long size = item.getSize();

if((name==null||name.equals(「」)) size==0)

continue;

%

tr

td%=item.getName()%/td

td%=item.getSize()%/td

/tr

%

//保存上傳的文件到指定的目錄

name = name.replace(『:』,『_』);

name = name.replace(『\\』,『_』);

item.write(「F:\\」+ name);

}

}

%

/table

br/br/

a href=「upload.html」返回上傳頁面/a

/center

/body

/html

在這個文件中需要注意的是FileUpload對象的一些參數值的意義,如下面代碼所示的三個參數sizeMax、sizeThreshold、repositoryPath:

FileUpload fu = new FileUpload();

// 設置允許用戶上傳文件大小,單位:位元組

fu.setSizeMax(10000000);

// maximum size that will be stored in memory?

// 設置最多只允許在內存中存儲的數據,單位:位元組

fu.setSizeThreshold(4096);

// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄

fu.setRepositoryPath(「C:\\TEMP」);

這3個參數的意義分別為:

SizeMax 用來設置上傳文件大小的最大值,一旦用戶上傳的文件大小超過該值時將會拋出一個FileUploadException異常,提示文件太大;

SizeThreshold 設置內存中緩衝區的大小,一旦文件的大小超過該值的時候,程序會自動將其它數據存放在repositoryPath指定的目錄下作為緩衝。合理設置該參數的值可以保證伺服器穩定高效的運行;

RepositoryPath 指定緩衝區目錄。

使用注意事項

從實際應用的結果來看該模塊能夠穩定高效的工作。其中參數SizeThreshold的值至關重要,設置太大會佔用過多的內存,設置太小會頻繁使用硬碟作為緩衝以致犧牲性能。因此,設置該值時要根據用戶上傳文件大小分布情況來設定。例如大部分文件大小集中在100KB左右,則可以使用100KB作為該參數的值,當然了再大就不合適了。使用commons-fileupload來處理HTTP文件上傳的功能模塊很小,但是值得研究的東西很多。

java怎樣上傳圖片(寫個例子謝謝);

我有一段上傳圖片的代碼,並且可以根據實際,按月或按天等,生成存放圖片的文件夾

首先在JSP上放一個FILE的標籤這些我都不說了,你也一定明白,我直接把處理過程給你發過去

我把其中存到資料庫中的內容刪除了,你改一下就能用

/**

*

* 上傳圖片

* @param servlet

* @param request

* @param response

* @return

* @throws Exception

*/

//這裡我是同步上傳的,你隨意

public synchronized String importPic(HttpServlet servlet, HttpServletRequest request,HttpServletResponse response) throws Exception {

SimpleDate()Format formatDate() = new SimpleDate()Format(“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_sizefile_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_wold_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”;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258060.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:48
下一篇 2024-12-15 12:48

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論