⑴ 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);
}
}
}
}