上传图片到FTP服务器,报500错误

上传图片到FTP服务器,报500错误,第1张

考虑到只有500问题,没有给出具体错误信息,给出以下几个可能的原因,可以配合服务器端查一下:

大小问题,试试尺寸是否有问题。

格式问题。

服务器端超级超时。

500一般是服务器处理内部处理错误排除的异常。

前言:

关于vue和elementui安装导入使用不做介绍

1template中首先展示upload多张上传

2当upload组件发生改变时处罚addFile

3提交到服务器,拿到服务器的数据地址

3显示 将拿到的数据放进一个数组中显示到file-list中去就好了

至此,完结。

有不对的地方欢迎指导哦。

1、安装插件程序方正影像采集插件安装包_I_v30740exe

2、根据技术人员提供的HTMLdemo进行开发

增加摄像预览控件,客户不需要预览,因此我进行了隐藏

增加按钮事件方法,另外由于初始化需要一定的时间,技术人员说是3秒,因此我设置了一个等待3秒再执行拍摄的方法。最后得到图像的Base64字符流传至后台进行上传到服务器

commonServicesashx 文件上传方法

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

  常用的上传组件:

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

}

<form method=post action="uploadphp" ENCTYPE="multipart/form-data">

<input type="file" name="upload_file">

<input type="submit" name="submit" value="上传文件">

  

用PHP上传时,需要对内容作详细的检查,例如是否容许读写文件,文件格式、文件大小是否在你指定的大小内等。

<

$file_size_max = 1000000;

// 限制文件上传最大容量(bytes)

$store_dir = "/public/www/upload/";

// 上传文件的储存位置

$accept_overwrite = true;

//允许读写文件

// 检查文件大小

if ($upload_file_size > $file_size_max) {

echo "对不起,你的文件容量大于规定";

exit;

}

// 检查读写文件

if (file_exists($store_dir $upload_file_name) &&&& !$accept_overwrite) {

echo "文件已存在,不能再复制";

exit;

}

//复制文件到指定目录

if (! @ copy($upload_file,$store_dir $upload_file_name)) {

echo "复制文件失败";

exit;

}

echo "上传文件完成";

一个实例:

首先,在自己台式机和笔记本上都开通了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(文本模式)时,能上传但无法显示,其他文件重命名、中文乱码解决、上传权限控制等,就不在此提及了。

需要这样的一个包 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();}

}

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 上传图片到FTP服务器,报500错误

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情