大神们 java将图片传在另外一个服务器怎么弄

大神们 java将图片传在另外一个服务器怎么弄,第1张

使用一些已有的组件帮助我们实现这种上传功能。

常用的上传组件:

Apache 的 Commons FileUpload

JavaZoom的UploadBean

jspSmartUpload

以下,以FileUpload为例讲解

1、在jsp端

<form id="form1" name="form1" method="post" action="servlet/fileServlet" enctype="multipart/form-data">

要注意enctype="multipart/form-data"

然后只需要放置一个file控件,并执行submit操作即可

<input name="file" type="file" size="20" >

<input type="submit" name="submit" value="提交" >

2、web端

核心代码如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

requestsetCharacterEncoding("UTF-8");

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List items = uploadparseRequest(request);

Iterator itr = itemsiterator();

while (itrhasNext()) {

FileItem item = (FileItem) itrnext();

if (itemisFormField()) {

Systemoutprintln("表单参数名:" + itemgetFieldName() + ",表单参数值:" + itemgetString("UTF-8"));

} else {

if (itemgetName() != null && !itemgetName()equals("")) {

Systemoutprintln("上传文件的大小:" + itemgetSize());

Systemoutprintln("上传文件的类型:" + itemgetContentType());

Systemoutprintln("上传文件的名称:" + itemgetName());

File tempFile = new File(itemgetName());

File file = new File(scgetRealPath("/") + savePath, tempFilegetName());

itemwrite(file);

requestsetAttribute("uploadmessage", "上传文件成功!");

}else{

requestsetAttribute("uploadmessage", "没有选择上传文件!");

}

}

}

}catch(FileUploadException e){

eprintStackTrace();

} catch (Exception e) {

eprintStackTrace();

requestsetAttribute("uploadmessage", "上传文件失败!");

}

requestgetRequestDispatcher("/uploadResultjsp")forward(request, response);

}

多张有没有提供ftp信息给你 通过ftp上传 

如果没有ftp信息的话 至少有服务器的信息吧 通过远程连接服务器 在服务器里面 你可以把打包传到百度网盘 在服务器里打开百度网盘进行下载即可

前台页面

<!--程序功能:文件上传程序的页面设计-->

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="5-05aspxcs" Inherits="_5_05" %>

<html xmlns="http://wwww3org/1999/xhtml" >

<head runat="server">

<title>无标题页</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:FileUpload ID="FileUpload1" runat="server" />

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" />

<br />

<br />

<asp:Label ID="Label5" runat="server" Font-Size="Larger" Height="33px" Text="上传成功!!!"

Visible="False" Width="300px"></asp:Label><br />

<asp:Label ID="Label1" runat="server" Height="40px" Width="450px"></asp:Label>

<br />

<asp:Label ID="Label2" runat="server" Height="46px" Width="450px"></asp:Label><br />

<asp:Label ID="Label3" runat="server" Height="35px" Width="450px"></asp:Label>

<br />

<asp:Label ID="Label4" runat="server" Height="37px" Width="450px"></asp:Label></div>

</form>

</body>

</html>

后台功能

//程序功能:后台功能代码,实现文件的上传

using System;

using SystemData;

using SystemConfiguration;

using SystemCollections;

using SystemWeb;

using SystemWebSecurity;

using SystemWebUI;

using SystemWebUIWebControls;

using SystemWebUIWebControlsWebParts;

using SystemWebUIHtmlControls;

public partial class _5_05 : SystemWebUIPage

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

if (FileUpload1PostedFile != null)

{

FileUpload1Visible = true;

string strDir = FileUpload1PostedFileFileName;

int myPos = strDirLastIndexOf("\\");

string strFileName = strDirSubstring(myPos);

string strPath = ServerMapPath("") + strFileName;

thisLabel2Text = "保存路径:";

thisLabel2Text += strPath;

FileUpload1PostedFileSaveAs(strPath);

thisLabel5Visible = true;

thisLabel1Text = "文件名称:";

thisLabel1Text += FileUpload1PostedFileFileName;

thisLabel3Text = "文件类型:";

thisLabel3Text += FileUpload1PostedFileContentType;

thisLabel4Text = "文件大小:";

thisLabel4Text += FileUpload1PostedFileContentLengthToString();

}

}

}

先假设有一FTP服务器,FTP服务器:qintithotnet,用户名:username 密码:user1234。在本地电脑D:盘创建一个文件夹"qint"。将要上传的文件复制到d:\qint里。通过FTP命令将文件从本地上传到服务器的步骤如下:

1“开始”-“运行”-输入“FTP”

2open qintithotnet

/这一步可以与第一步合并,在“运行”里直接输入"ftp qintithotnet"。如果你的FTP服务器不是用的21默认端口,假如端口是2121,那么此步的命令应在后面空格加2121,即“open qintithotnet 2121”/

3username

/提示你输入用户名/

4user1234

/提示你输入密码,密码不回显,打完密码后回车即可。如果你的密码输入错误,将不会提示你重新输入,这时你要键入“user”命令,将会出现第三步,你可以重新输入用户名和密码。/

5dir

/你成功登陆后就可以用dir查看命令查看FTP服务器中的文件及目录,用ls命令只可以查看文件。/

6mkdir qint

/在FTP服务器上根目录下建立qint目录。/

7cd qint

/进入目录qint,用“cd 你的目录名”可以进入当前目录的下一级目录,这跟DOS一样。/

8bin

/采用二进制传输。如果你要上传下载,这一步很重要,不先执行这个命令,上传下载会很慢。/

9lcd d:\qint

/定位本地默认文件夹,在前面我事先在D:盘创建的。/

10!dir

/查看本地文件夹中的文件及目录/

11put i001jpg

/将当前目录(d:\qint)中的文件i001jpg上传到FTP服务器默认目录。可以用"mput "将所有文件上传到FTP服务器上。/

需要这样的一个包 jcifs-1111

public static void forcdt(String dir){

InputStream in = null;

OutputStream out = null;

File localFile = new File(dir);

try{

//创建file类 传入本地文件路径

//获得本地文件的名字

String fileName = localFilegetName();

//将本地文件的名字和远程目录的名字拼接在一起

//确保上传后的文件于本地文件名字相同

SmbFile remoteFile = new SmbFile("smb://administrator:admin@10001/e$/aa/");

//创建读取缓冲流把本地的文件与程序连接在一起

in = new BufferedInputStream(new FileInputStream(localFile));

//创建一个写出缓冲流(注意jcifs-1315jar包 类名为Smb开头的类为控制远程共享计算机"io"包)

//将远程的文件路径传入SmbFileOutputStream中 并用 缓冲流套接

out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile+"/"+fileName));

//创建中转字节数组

byte[] buffer = new byte[1024];

while(inread(buffer)!=-1){//in对象的read方法返回-1为 文件以读取完毕

outwrite(buffer);

buffer = new byte[1024];

}

}catch(Exception e){

eprintStackTrace();

}finally{

try{

//注意用完操作io对象的方法后关闭这些资源,走则 造成文件上传失败等问题。!

outclose();

inclose();

}catch(Exception e){

eprintStackTrace();}

}

}

一个实例:

首先,在自己台式机和笔记本上都开通了ftp,这个不会的同学可以网上查serv-u,相关教程肯定不少的。

然后在台式机本地做了个测试:

$ftp_server = "1921681100";

$ftp_user_name = "laohu";

$ftp_user_pass = "123456";

$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

$file = 'testtxt';

$remote_file = '/test/atxt';

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {

echo "文件移动成功\n";

} else {

echo "移动失败\n";

}

ftp_close($conn_id);

运行后:文件移动成功。

要的就是这个效果了,之后用台式机做程序服务器,上传附件时全用ftp方法上传至笔记本上,笔记本ip是105,相应代码如下:

if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {

$ftp_server = "1921681105";

$ftp_user_name = "lesley";

$ftp_user_pass = "123456";

$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

$file = $_FILES['uploadfile']['tmp_name'];

$remote_file = '/test/'$_FILES['uploadfile']['name'];

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {

echo "文件:"$_FILES['uploadfile']['name']"上传成功\n";

} else {

echo "上传失败\n";

}

ftp_close($conn_id);

}

对应的前台页面代码:

<form action="uploadfilephp" method="post" enctype="multipart/form-data">

<input type="file" name="uploadfile" id="uploadfile" />

<input type="submit" name="submit" value="submit" />

</form>

运行后确实成功。

需要注意:

在用ftp_put方法时,第四个参数传送模式,需要用FTP_BINARY(二进制模式),用FTP_ASCII(文本模式)时,能上传但无法显示,其他文件重命名、中文乱码解决、上传权限控制等,就不在此提及了。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 大神们 java将图片传在另外一个服务器怎么弄

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情