欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

erlang aliyun upload Oss

程序员文章站 2022-07-14 16:20:30
...
[quote]注意内外网上传 我是用外网的 根据自己的需求 都是一年前写的东西 [/quote]

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


祝你好运