php如何上传图片到远程服务器

php如何上传图片到远程服务器,第1张

可以使用curl这个扩展来实现。

PHP 支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。

libcurl支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

curl_close() 关闭一个cURL会话。

curl_copy_handle()复制一个cURL句柄和它的所有选项。

curl_errno()返回最后一次的错误号。

curl_error()返回一个保护当前会话最近一次错误的字符串

curl_escape()返回转义字符串,对给定的字符串进行URL编码。

curl_exec()执行一个cURL会话。

curl_file_create()创建一个CURLFile对象。

curl_getinfo()获取一个cURL连接资源句柄的信息。

curl_init()初始化一个cURL会话。

curl_multi_add_handle()向curl批处理会话中添加单独的curl句柄。

curl_multi_close()关闭一组cURL句柄。

curl_multi_exec()运行当前cURL句柄的子连接

curl_multi_getcontent()如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流。

curl_multi_info_read()获取当前解析的cURL的相关传输信息。

curl_multi_init()返回一个新cURL批处理句柄。

curl_multi_remove_handle()移除curl批处理句柄资源中的某个句柄资源。

curl_multi_select()等待所有cURL批处理中的活动连接。

curl_multi_setopt()设置一个批处理cURL传输选项。

curl_multi_strerror()返回描述错误码的字符串文本。

curl_pause()暂停及恢复连接。

curl_reset()重置libcurl的会话句柄的所有选项。

curl_setopt_array()为cURL传输会话批量设置选项。

curl_setopt()设置一个cURL传输选项。

curl_share_close()关闭cURL共享句柄。

curl_share_init()初始化cURL共享句柄。

curl_share_setopt()设置一个共享句柄的cURL传输选项。

curl_strerror()返回错误代码的字符串描述。

curl_unescape()解码URL编码后的字符串。

curl_version()获取cURL版本信息。

需要这样的一个包 jcifs-1.1.11

public static void forcdt(String dir){

InputStream in = null

OutputStream out = null

File localFile = new File(dir)

try{

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

//获得本地文件的名字

String fileName = localFile.getName()

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

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

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

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

in = new BufferedInputStream(new FileInputStream(localFile))

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

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

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

//创建中转字节数组

byte[] buffer = new byte[1024]

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

out.write(buffer)

buffer = new byte[1024]

}

}catch(Exception e){

e.printStackTrace()

}finally{

try{

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

out.close()

in.close()

}catch(Exception e){

e.printStackTrace()}

}

}

HTTPClient网上代码很多的 可以直接复制 然后再输入远程地址 另外在远程服务器那边写个Webservices 用于接收传过来的图片数据 很简单的 HTTPCLIENT里面的远程地址说白了就是调用远程服务器那边的这个WEBSERVICES

我不知道你在做什么项目哈 但是我知道一般用这种方法上传图片是用于基于WPF的silverlight上传图片和视频的方法 因为WPF是客户端 只有这种方法可以实现 其实还有很多方法的 思路是变化的 比如你可以把需要上传的图片转化为bitimage 然后将这个bitimage转化为byte[]类型传给服务器服务器直接接受这个byte[] 然后服务器再将这个byte转化为图片就可以了 其实这只是一种方法而已 很多人给了他一个专业的术语 可以成为一种协议,很多做视频聊天 视频监控都可以用我说这种方法 本人亲测 CPU优化还算不错 用于商业项目是可以的


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/276525.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存