javaweb从浏览器上传文件到服务器,保存在什么地方比较好

javaweb从浏览器上传文件到服务器,保存在什么地方比较好,第1张

1、资源文件放在服务器下是完全没问题的,一个网站发布后也不会随便更新的。
2、如果资源文件过多、或都过大,是建议放到服务器下的,会占用服务器过大的空间,你可以在tomcat中再配置一个虚拟路径,指向一个盘符下一个文件夹(如:D:/images),在 tomcat 的 serverxml 中设置<Context docBase="D:/images" path="/img" />,然后你就可以用你的服务器地址+/img/+资源路径(注意:这个资源路径是相对D:/images的相对路径)去访问资源了

/
上传到本地
@param uploadFile
@param request
@return
/
@RequestMapping("/upload")
@ResponseBody
public Map<String, Object> uploadApkFile(@RequestParam("uploadUpdateHistoryName") MultipartFile uploadFile,
>        SmartUpload su = new SmartUpload();
        JspFactory factory = JspFactorygetDefaultFactory();
        PageContext pageContext = null;
        JSONObject obj = new JSONObject();
        String fileName = UUIDrandomUUID()toString();
        try {
            initFile();
            pageContext = factorygetPageContext(this, request, response, "", true, 8192, true);
            suinitialize(pageContext);
            int size = sugetSize();
            if(size>=400){
                objput("state", false);
                objput("msg", "不能大于400KB");
            }else{
                suupload();
                Files file = sugetFiles();   //必须在upload后才有值
                //此为得到文件的扩展名,getFile(0)为得到唯一的一个上传文件
                String ext=filegetFile(0)getFileExt();
                String name = fileName+""+ext;
                sugetFiles()getFile(0)saveAs("report/upload/"+name);
                WebConstantsREPORT_LOGO_URL="report/upload/"+name;
                objput("fileName", name);
                objput("state", true);
                objput("ext", ext);
            }
        } catch (Exception e) {
            objput("state", false);
            objput("msg",etoString());
            eprintStackTrace();
        }
        PrintWriter out = responsegetWriter();
        outprint(obj);
        outflush();

接收到文件后就在tomcat\webapps\项目\report\upload下面

可以通过JDK自带的API实现,如下代码:
package comcloudpowerutil;
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javaioIOException;
import sunnetTelnetInputStream;
import sunnetTelnetOutputStream;
import sunnetftpFtpClient;
/
Java自带的API对FTP的 *** 作
@Title:Ftpjava
/
public class Ftp {
/
本地文件名
/
private String localfilename;
/
远程文件名
/
private String remotefilename;
/
FTP客户端
/
private FtpClient ftpClient;
/
服务器连接
@param ip 服务器IP
@param port 服务器端口
@param user 用户名
@param password 密码
@param path 服务器路径
@date 2012-7-11
/
public void connectServer(String ip, int port, String user,
String password, String path) {
try {
/ 连接服务器的两种方法/
//第一种方法
// ftpClient = new FtpClient();
// ftpClientopenServer(ip, port);
//第二种方法
ftpClient = new FtpClient(ip);

ftpClientlogin(user, password);
// 设置成2进制传输
ftpClientbinary();
Systemoutprintln("login success!");
if (pathlength() != 0){
//把远程系统上的目录切换到参数path所指定的目录
ftpClientcd(path);
}
ftpClientbinary();
} catch (IOException ex) {
exprintStackTrace();
throw new RuntimeException(ex);
}
}
public void closeConnect() {
try {
ftpClientcloseServer();
Systemoutprintln("disconnect success");
} catch (IOException ex) {
Systemoutprintln("not disconnect");
exprintStackTrace();
throw new RuntimeException(ex);
}
}
public void upload(String localFile, String remoteFile) {
thislocalfilename = localFile;
thisremotefilename = remoteFile;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
//将远程文件加入输出流中
os = ftpClientput(thisremotefilename);
//获取本地文件的输入流
File file_in = new File(thislocalfilename);
is = new FileInputStream(file_in);
//创建一个缓冲区
byte[] bytes = new byte[1024];
int c;
while ((c = isread(bytes)) != -1) {
oswrite(bytes, 0, c);
}
Systemoutprintln("upload success");
} catch (IOException ex) {
Systemoutprintln("not upload");
exprintStackTrace();
throw new RuntimeException(ex);
} finally{
try {
if(is != null){
isclose();
}
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if(os != null){
osclose();
}
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
public void download(String remoteFile, String localFile) {
TelnetInputStream is = null;
FileOutputStream os = null;
try {
//获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。
is = ftpClientget(remoteFile);
File file_in = new File(localFile);
os = new FileOutputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = isread(bytes)) != -1) {
oswrite(bytes, 0, c);
}
Systemoutprintln("download success");
} catch (IOException ex) {
Systemoutprintln("not download");
exprintStackTrace();
throw new RuntimeException(ex);
} finally{
try {
if(is != null){
isclose();
}
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if(os != null){
osclose();
}
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
public static void main(String agrs[]) {
String filepath[] = { "/temp/aatxt", "/temp/registlog"};
String localfilepath[] = { "C:\\tmp\\1txt","C:\\tmp\\2log"};
Ftp fu = new Ftp();
/
使用默认的端口号、用户名、密码以及根目录连接FTP服务器
/
fuconnectServer("127001", 22, "anonymous", "IEUser@", "/temp");

//下载
for (int i = 0; i < filepathlength; i++) {
fudownload(filepath[i], localfilepath[i]);
}

String localfile = "E:\\号码txt";
String remotefile = "/temp/哈哈txt";
//上传
fuupload(localfile, remotefile);
fucloseConnect();
}
}

common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件
下面先介绍上传文件到服务器(多文件上传):
import javaxservlet;
import javaxservlet>可以通过FTP的方式上传到指定服务器
希望我团的答案能给您一定的帮助~祝您早日解决问题~!
SOSO
~你敢告诉我,我的回答哪不符合规定了么??不告诉我原因我怎么改???

BufferedInputStream bis = new BufferedInputStream( new FileInputStream("文件路径"));
byte[] buf = new byte[1024];
int len = 0;
BufferedOutputStream bos = new BufferedOutputStream(sgetOutputStream);
while((len = bisread(buf))!=-1){
boswrite(buf,0,len);
bosflush();
}
思路是这样的了。。。具体你自己写吧。

package comletvdircloudutil;import comletvdircloudcontrollerDirectorWatermarkController;import orgslf4jLogger;import orgslf4jLoggerFactory;import javaio;import javanet>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12619211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存