jsp smartupload如何上传固定位置文件到服务器

我想用smartupload上传本地c盘中的内容到服务器,可是该组建好像是只有用表单提交的方式才能获取到要上传的文件位置,我怎么能够不用表单提交,直接上传磁盘的内容到服务... 我想用smartupload上传本地c盘中的内容到服务器,可是该组建好像是只有用表单提交的方式才能获取到要上传的文件位置,我怎么能够不用表单提交,直接上传磁盘的内容到服务器呢?
高手进,急!!!!
展开
 我来答
必杀语
2012-08-09 · TA获得超过394个赞
知道小有建树答主
回答量:254
采纳率:100%
帮助的人:353万
展开全部
你虽然问得很简单,但是做过相关项目的人都是知道这个问题比较复杂,为什么一定要用form表单上传,这是因为文件上传必须要通过以下步骤。
1、客户端和服务器建立连接。
2、客户端可以向服务器端发送数据。因为上传文件实质上也是向服务器端发送请求。
3、客户端按照符合“multipart/form-data”的格式向服务器端发送数据。
注意,客户端要向服务器发送的请求是“multipart/form-data””格式的数据,Multipart/form-data格式就是浏览器用表单提交数据的格式。
你不用表单如何实现这个格式?
如果不想用表单可以推荐你几种方法。
1、动态创建表单,这个方法不影响你的页面布局,可以通过弹出<div>嵌入<form>实现或者使用隐藏的<form>来实现。一般都推荐这个方法。
2、用ajaxFileUpload组件或其他组件,异步上传,原理也是动态创建表单。
追问
可问题是怎么写呀?能给点代码提示吗?嵌入的话里面有不让它写
这样的话参数该怎么写呢?
帐号已注销
2012-08-18 · 超过34用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:86万
展开全部
这个并不是很难,你用struts2框架很简单的。
1、在后台写个action类,
public class FileUpLoadAction extends ActionSupport{
private String userId;
private File resume;
private String resumeFileName;
private String resumeContentType;

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
Log.getLog().info("userId="+userId);
取得客户端的上传文件();
return "path";
}

void 取得客户端的上传文件(){
try {
//检查客户是否上传了文件
if(resume==null){
Log.getLog().info("客户端没有上传文件");
return ;
}
//建立读流的工具对象:fin,来源于客户端文件上传
FileInputStream fin=new FileInputStream(resume);
//建立写流的工具对象:fout,要写入应用服务器的某个硬盘目录
String outDir="D:\\";
String outFilePath=outDir+"/"+resumeFileName;
Log.getLog().info("上传文件大小,filesize="+resume.length());
Log.getLog().info("上传文件文件名,fileName="+resumeFileName);
FileOutputStream fout=new FileOutputStream(outFilePath);
//执行读、写操作
int len=10*1024; //10k的缓存区
byte[]buf=new byte[len];
int count; //用于每次读取文件的计数控制

while(true){
count=fin.read(buf);
if(count<0)
break;
fout.write(buf, 0, count);
}

//关闭操作
fin.close();

fout.flush();
fout.close();

Log.getLog().info("上传文件工作完成。。。");

} catch (Exception e) {
e.printStackTrace();

}

}
然后再写个.jsp页面
<s:fielderror></s:fielderror>
<s:form action="upload" enctype="multipart/form-data">
<s:textfield name="userId" label="姓名:"></s:textfield>
<s:file name="resume" label="个人信息:" size="80"></s:file>

<s:submit value="提交"></s:submit>
</s:form>
再配置下struts.xml,如果想上传大文件,需要加上
<constant name="struts.multipart.maxSize" value="100000000" />
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chengwei1104
2012-08-09 · TA获得超过619个赞
知道小有建树答主
回答量:558
采纳率:0%
帮助的人:372万
展开全部
什么叫上传?得有人操作或者自动任务操作才行。
你的意思是不想选中文件,想直接点一个上传按钮就自动上传文件吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式