`

erlang aliyun upload Oss

阅读更多
引用
注意内外网上传 我是用外网的  根据自己的需求  都是一年前写的东西

Begin

-module (uploadrecall).
% (外网):oss.aliyuncs.com
% (内网):oss-internal.aliyuncs.com
-define(ACCESS_ID, "meLQf8cj5D*****").
-define(SECRET_ACCESS_KEY, "KHSYv1ttqywsMrnnlq*******").
% uploadrecall:recall("d:/4.wav","old/8001/2013/05/31/4.wav").
-export ([recall/2]).
% FilePath,FileName
recall(FilePath,FileName) ->

	CONTENT_LENGTH = filelib:file_size(FilePath),
    OBJECT=FileName,
    % HOST="http://oss.aliyuncs.com/",
    DATE = lists:flatten(get_timestamp()),
    % CONTENT_TYPE="audio/x-wav",application/octet-stream
    CONTENT_TYPE="application/octet-stream",
    % CONTENT= erlang:md5("d:/msg.wav"),
    CanonicalizedResource="/jdy-file/"++FileName,
    Signature = base64:encode_to_string(crypto:sha_mac("KHSYv1ttqywsMrnnlq*******",("PUT\n\n"++CONTENT_TYPE++"\n"++DATE++"GMT\n"++CanonicalizedResource))),
    Authorization ="Authorization: OSS "++?ACCESS_ID++":"++Signature,
    {ok,Sock} = gen_tcp:connect("oss.aliyuncs.com", 80, [{active,false}]),
    {ok, File} = file:read_file(FilePath),
    gen_tcp:send(Sock, "PUT /"++OBJECT++" HTTP/1.1\r\nHost: oss.aliyuncs.com\r\nAccept-Encoding: identity\r\nDate: "++DATE++"GMT\r\nHost: jdy-file.oss.aliyuncs.com\r\nContent-Type: "++CONTENT_TYPE++"\r\nContent-Length: "++integer_to_list(CONTENT_LENGTH)++"\r\nExpect: 100-Continue\r\n"++Authorization++"\r\n\r\n"),
    gen_tcp:send(Sock, File),
    file:delete(FilePath).
    % gen_tcp:recv(Sock,50000),
    % gen_tcp:close(Sock).

    %Date时间方法    
get_timestamp() ->
    UTime = erlang:universaltime(),
    aly_fmt(UTime).

 aly_fmt(DateTime) ->
    {Date,{Hour,Min,Sec}} = DateTime,
    {Year,Month,Day} = Date,
    MonStr = month_to_str(Month),
    DWStr = date_to_dw_str(Date),
    io_lib:format("~s ~2.10.0B ~s ~4.10.0B ~2.10.0B:~2.10.0B:~2.10.0B ",
		  [DWStr++"," ,Day, MonStr, Year, Hour, Min, Sec]).

month_to_str(Month) ->
    element(Month, {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}).

date_to_dw_str(Date) ->
    DW = calendar:day_of_the_week(Date),
    element(DW, {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}).


end 


祝你好运
分享到:
评论

相关推荐

    Erlang 22.3 linux 最新版百度云.txt

    RabbitMQ 是由 Erlang 语言编写的, 也正因如此, 在安装 RabbitMQ 之前需要 安装 Erlang。。建议采用较新版的 Erlang ,这样可以获得较多更新和改进官网下载很忙,提供百度云连接下载.

    ERLANG最新版安装包Win64位

    最近项目在用RabbitMQ,初次接触这个东西,家里和办公室宽带都无法下载,弄了很久,最后用的阿里云服务器,直接用wget命令down下来的,速度300kb/秒。有阿里云账号的朋友可以试试,各个版本都可以下载。 目前官网...

    centos6阿里云rabbitmq安装

    ### CentOS 6 阿里云环境下 RabbitMQ 安装指南 #### 一、环境准备与依赖安装 在正式开始安装 RabbitMQ 之前,我们首先需要确保系统已安装必要的依赖包,这些依赖对于后续的安装过程至关重要。 ##### 1.1 安装 ...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    erlang 24.0版本 win64 位

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时计算系统。它的设计目标是创建一个高度可靠且可扩展的平台,尤其在电信、银行、电子商务和互联网服务等领域有着广泛的应用。Erlang 24.0是这个语言的一个新...

    erlang otp25 win安装包

    erlang otp25 win安装包

    erlang编程 Introducing Erlang

    **Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...

    erlang25.0 windows版本

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...

    erlang_版本24.3.4.4

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...

    Erlang23_3.zip

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson于1986年开发,主要用于构建高可用性、分布式系统。Erlang的设计目标是支持大量并发连接,容错性强,易于编写实时系统。Erlang采用actor模型...

    erlang22最新下载包

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...

    erlang资源

    这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...

    Erlang 环境 opt_win64_21.1版本

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。Erlang环境,如"opt_win64_21.1"版本,提供了在Windows平台上运行Erlang程序所需的基础组件...

    Erlang官网下载过慢

    Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性和处理大量并发连接的能力而被广泛应用于电信、互联网基础设施和实时系统。RabbitMQ...

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...

    gcm-erlang, 用于Google云消息传递的Erlang应用程序.zip

    gcm-erlang, 用于Google云消息传递的Erlang应用程序 gcm 软件提供了一个用于 Google Cloud Messaging的Erlang客户机。,你可以对 gcm-erlang做什么:你可以以使用 gcm-erlang:启动几个代表由不同 GCM API keys 定义...

    Erlang 20.3linux安装包

    Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性、并发性和内存管理机制而被广泛应用于网络通信、数据库系统以及消息中间件,如...

    xiandiao_erlang_Erlang课后习题_

    【Erlang编程语言及其应用】 Erlang是一种并发式、函数式的编程语言,由瑞典电信设备制造商Ericsson开发,最初用于构建高可用性、容错性和可扩展性的分布式系统。"xiandiao_erlang_Erlang课后习题_"这个压缩包文件...

    windows下安装Erlang环境

    Erlang是一种强大的编程语言,特别适合于构建高并发、分布式和容错性强的系统。...对于那些需要处理大量并发连接和需要高度可靠性的服务,如电信、云基础设施或实时系统,Erlang提供了强大而优雅的解决方案。

    erlang安装包.zip

    erlang安装包

Global site tag (gtag.js) - Google Analytics