本文目錄一覽:
- 1、JAVA 如何使用curl微信上傳圖片
- 2、用java怎麼上傳圖片到項目指定的文件夾
- 3、Java 中圖片上傳問題
- 4、用java完成圖片多張批量上傳的功能,還有就是後台的應該怎麼處理上傳的照片。
- 5、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