⑴ java上傳文件在Tomcat下,怎麼上傳在項目指定目錄
你使用的那個上傳組件啊?
struts2 默認提供的那個?
common-file-upload ?
要是使用的是struts 使用域驅動模式 在文件名上使用 *File 就行啊,然後你徑讀取就行了啊。
⑵ 用JAVA程序如何在D盤根目錄中建立文件夾保存上傳過來的文件,以及如何計算文件夾大小
這個是用框架做的用的Struts2需要你加框架和jsp頁面的只能給你些代碼自己看看了 其實也都通用的 package actions;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport{
private String username;
private File upload;
private String uploadFileName;
private String uploadContentType;
public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public File getUpload() {
return upload;
} public void setUpload(File upload) {
this.upload = upload;
} public String getUploadFileName() {
return uploadFileName;
} public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
} public String getUploadContentType() {
return uploadContentType;
} public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
} @Override
public String execute() throws Exception {
// TODO Auto-generated method stub
InputStream fin=new FileInputStream(upload);
String root=ServletActionContext.getRequest().getRealPath("upload");
//root獲取上傳文件的伺服器目錄;
//String root="d:/upload";
File file=new File(root,uploadFileName);//root的位置可以換成相對的路徑
OutputStream fos=new FileOutputStream(file);
byte[] buffer=new byte[1024];
int len=0;
while((len=fin.read(buffer))>0)
{
fos.write(buffer,0,len);
}
fin.close();
fos.close();
return SUCCESS;
}
}
⑶ java上傳到指定文件夾問題
可以先登錄到遠程伺服器,之後通過changeWorkingDirectory切換到指定的文件夾下進行上傳。
舉例:
**
* 上傳文件
*
* @param fileName
* @param plainFilePath 文件路徑路徑
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上傳文件開始");
Log.info("連接遠程上傳伺服器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("檢查文件路徑是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查詢文件路徑不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上傳文件成功:"+fileName+"。文件保存路徑:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
備註:只需要修改上傳的伺服器地址、用戶名、密碼即可進行伺服器訪問上傳。根據實際需要修改即可。
⑷ java怎樣實現上傳一個文件夾
關鍵是本地目錄選擇,你可以使用flash或者applet實現,applet網上有個jupload 就是處理目錄選擇上傳的,你可以看看
⑸ javaweb上傳時手動創建存放文件的文件夾應該怎麼做
上傳保存操作是在後台Java代碼里處理的。
你在保存前使用Java代碼在伺服器上創建文件夾就好了啊。
Filedir=newFile("要創建的文件夾的位置");
dir.mkdirs();
你需要先獲得工程當前路徑,然後自己拼文件夾的位置就好了。如何獲得當前工程的路徑就和你是否使用了框架有關系了,一些框架提供了快捷獲取。
比如最基本的Servlet獲取:在servlet中獲得項目路徑
⑹ java如何上傳本地文件夾到其他伺服器(不一定是FTP伺服器)
文件夾傳輸要用遞歸循環文件夾裡面的內容,遇到一個文件夾就新建一個文件夾,否則新建文件,然後一個一個的用位元組流傳輸(FileInputStream和FileOutputStream),不過這樣效率會很低,
⑺ java文件上傳文件路徑
String newFilePath = "new Path" + "\\" + newfile.getFileName;
File file = new File(String newFilePath);
⑻ JAVA實現文件夾傳輸
//這是一個傳輸的程序.下面是兩個程序,一個名為MyClient,
//是客戶端.另一個名為MyServer,為伺服器端.這兩個程序實現的
//是將客戶端的e盤名為"1"的文件夾里的所有內容傳輸到伺服器端
//的e盤名為"2"的文件夾里.運行時,一定要先運行MyServer,否則會
//出錯.這個程序我用兩台電腦在區域網里運行過多次,一切正常,速度
//在600KB/s左右.如果運行MyServer後,再運行MyClient時,出現錯誤
//建議再運行一下.因為它們可能在建立連接時由於網路連接不好而
//未能連接成功而出錯.程序是肯定沒有問題的.
import java.io.*;
import java.net.*;
public class MyClient
{
Socket client;
boolean flag=true;
FileInputStream fis;//此輸入流負責讀取本機上要傳輸的文件
DataOutputStream dos;//此輸出流負責向另一台電腦(伺服器端)傳輸數據
DataInputStream dis;//此輸入流負責讀取另一台電腦的回應信息
public static void main(String[] args)
{
new MyClient().ClientStart();
}
public void ClientStart()
{
try
{
client=new Socket("192.168.2.101",30000);//伺服器端的IP,(這個只是在區域網內的)我的是這個,你的根據實際而定
//client=new Socket("localhost",30000);
System.out.println("已連接");
dos=new DataOutputStream(client.getOutputStream());
dis=new DataInputStream(client.getInputStream());
transmit(new File("e:\\1\\"));
String s="/]00";//提示傳輸完畢的標記
byte b[]=s.getBytes();
dos.write(b,0,s.length());
dos.flush();
}
catch(IOException e)
{
System.out.println("Error");
}
}
public void transmit(File f)throws IOException//這是傳輸的核心,而且將被遞歸
{
byte b[];
String ts;
int ti;
for(File f1:f.listFiles())
{ //首先通過if語句判斷f1是文件還是文件夾
if(f1.isDirectory()) //fi是文件夾,則向伺服器端傳送一條信息
{
ts="/]0f"+(f1.getPath().replace("e:\\1\\",""));//"/]0f"用於表示這條信息的內容是文件夾名稱
b=ts.getBytes();
dos.write(b);
dos.flush();
dis.read();
transmit(f1);//由於f1是文件夾(即目錄),所以它裡面很有可能還有文件或者文件夾,所以進行遞歸
}
else
{
fis=new FileInputStream(f1);
ts="/]0c"+(f1.getPath().replace("e:\\1\\",""));//同上,表示這是一個文件的名稱
b=ts.getBytes();
dos.write(b);
dos.flush();
dis.read();
dos.writeInt(fis.available());//傳輸一個整型值,指明將要傳輸的文件的大小
dos.flush();
dis.read();
b=new byte[10000];
while(fis.available()>0)//開始傳送文件
{
ti=fis.read(b);
dos.write(b,0,ti);
dos.flush();
}
dos.flush();
fis.close();
dis.read();
}
}
}
}
import java.io.*;
import java.net.*;
public class MyServer
{
ServerSocket server=null;
Socket client=null;
boolean flag=true;
DataInputStream dis;
DataOutputStream dos;
FileOutputStream fos;
public static void main(String[] args)
{
new MyServer().ServerStart();
}
public void ServerStart()
{
try
{
server=new ServerSocket(30000);
System.out.println("埠號:"+server.getLocalPort());
client=server.accept();
System.out.println("連接完畢");
dis=new DataInputStream(client.getInputStream());
dos=new DataOutputStream(client.getOutputStream());
String answer="g";
byte ans[]=answer.getBytes();
byte b[]=new byte[1000];
int ti;
new File("e:\\2").mkdirs();
while(flag)
{
ti=dis.read(b);
dos.write(ans);
String select=new String(b,0,ti);
if(select.contains("/]0f"))
{
File f=new File("e:\\2\\"+(select.replace("/]0f","")));
System.out.println("creat directory");
f.mkdirs();
}
else if(select.contains("/]0c"))
{
fos=new FileOutputStream("e:\\2\\"+(select.replace("/]0c","")));
String cs;
boolean cflag=true;
int tip=dis.readInt();
dos.write(ans);
while(tip>0)
{
ti=dis.read(b,0,(tip>1000?1000:tip));
tip=tip-ti;
cs=new String(b,0,4);
fos.write(b,0,ti);
}
fos.flush();
fos.close();
dos.write(ans);
}
else if(select.contains("/]00"))
{
flag=false;
}
}
dis.close();
client.close();
server.close();
}
catch(IOException e)
{
System.out.println("Error");
}
}
}
⑼ 在java程序中上傳的文件保存在哪裡
這個問題問的比較詭異我能告訴你的是
上傳和下載的路徑都是你自己定義的文件上傳的道理就是讀流
然後把文件保存到你指定的路徑下面去一般這樣做資料庫設計個欄位
是你保存的路徑肯定是你伺服器中某個文件夾中
下載就是讀路徑
加些固定的下載代碼.
⑽ 用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()) {
// 復制文件
File(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();
Directiory(sourceDir, targetDir);
}
}
}
// 復制文件
public static void File(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 Directiory(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());
File(sourceFile,targetFile);
}
if (file[i].isDirectory()) {
// 准備復制的源文件夾
String dir1=sourceDir + "/" + file[i].getName();
// 准備復制的目標文件夾
String dir2=targetDir + "/"+ file[i].getName();
Directiory(dir1, dir2);
}
}
}
}